JS的数组排序方法排的是字符串
为何这么说呢
看代码:
let nums = [25, 100, 90]
nums.sort() // [100, 25, 90]
发现问题了吗,默认是按照升序排序的
但是答案并不是[25, 90, 100]
而是 [100, 25, 90]
这是因为sort
函数按照字符串顺序进行排序
过程是这样的:25和100,第一个字符 2>1 ,所以'25' > '100'
,25被排到了后面
改正方法就是在sort后的括号内添加一个比值函数:
nums.sort((a, b) => {
return a - b
})
当 a - b
值为真时才进行换位,所以当 a 比 b 小时,不进行换位(a在b的前一个位置)