赞
踩
sort()
使用原地算法对数组进行排序,如果不传入参数,则数组按照元素的字典序升序排列(在此过程中含有隐式转换,因此数组的每个元素都会调用一次 toString()
方法转换为字符串),所谓的按字典序排列,就是对两个字符串的第一个不同字符的 Unicode 编码值进行比较并排序。sort((a, b) => {})
,a 和 b 为每次比较的值,a 和 b 的顺序根据排序函数的返回值决定:
Array.sort((a, b) => {
// 返回一个负数,告诉计算机将a排在b前面,因此较小的值被放在了前面
if (a < b) return -1
// 返回一个正数,告诉计算机将a排在b后面,因此将较大值放在了后面
// 这里省略了a等于b的逻辑,因为如果两个值相等,交不交换位置都无所谓
else return 1
})
// 经过观察我们可以发现:
// 1.第一个判断中的 a < b,因此 a - b 本来就小于0,因此可以直接return a - b
// 2. 第二个判断中的 else 即 a >= b, 因此 a - b 本来就大于等于0, 因此可以直接 return a - b
// 由于两个判断重复,直接删掉一个,不影响程序运行
// // 同理,如果我们需要降序排列,也可以使用以上写法进行精简
arr.sort(function(a,b){ return a-b })
升序arr.sort(function(a,b){ return b-a })
降序Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。