<p>JavaScript数组排序默认按字符串Unicode码点排序,需用sort()方法;数字排序须提供比较函数,如(a, b) => a - b实现升序;对象数组可按属性排序,常用a.age - b.age或a.name.localeCompare(b.name);注意sort()会修改原数组,可用[...arr]复制避免副作用。</p>

JavaScript中数组排序主要通过sort()方法实现,默认按字符串Unicode码点排序。如果需要数字排序或更复杂的逻辑,必须提供自定义比较函数。
调用sort()不传参数时,数组元素会被转换为字符串,再按字典顺序排列。
例如:
let numbers = [10, 2, 25, 3];numbers.sort();// 结果: ['10', '2', '25', '3'] → ['10', '2', '25', '3']
立即学习“Java免费学习笔记(深入)”;
你会发现 10 排在 2 前面,因为字符串 "10" 的首字符 "1" 小于 "2"。
要正确排序数字,需传入一个比较函数:
比较函数接收两个参数 a 和 b,返回值决定顺序:
升序排序示例:
let numbers = [10, 2, 25, 3];numbers.sort((a, b) => a - b);// 结果: [2, 3, 10, 25]
降序排序:
numbers.sort((a, b) => b - a);// 结果: [25, 10, 3, 2]
对包含对象的数组排序,比较函数根据对象的某个属性进行判断。
例如按年龄排序用户列表:
let users = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 20 }, { name: 'Charlie', age: 30 }];users.sort((a, b) => a.age - b.age);// 按年龄升序排列
也可以按字符串属性排序,比如姓名:
users.sort((a, b) => a.name.localeCompare(b.name));// 使用 localeCompare 正确处理字母顺序
sort() 会修改原数组。如需保留原数组,先复制:
let sorted = [...numbers].sort((a, b) => a - b);
支持链式调用,常与其他方法如 filter()、map() 配合使用。
复杂排序可嵌套判断,例如先按部门再按年龄:
data.sort((a, b) => { if (a.dept !== b.dept) { return a.dept.localeCompare(b.dept); } return a.age - b.age;});
基本上就这些。掌握比较函数是关键,理解返回值含义后,任何排序需求都能灵活应对。
以上就是JS数组排序怎么实现_JavaScript数组排序方法与自定义排序教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号