前几天在谷歌浏览器中使用JavaScript中Array的sort排序字符串,发现排序不准确,这里记一下。
var arr=['a','d','b','c','b'];
var arr2=arr.sort((a,b)=>{
return a<b
})
console.log(arr2)
- 主要原因是该函数要比较两个值,在第一个版本中比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。 - 而在第二版的返回值是true与false,对应的是 1 和 0。于是修改为下面的版本
修改为
var arr=['a','d','b','c','b'];
var arr2=arr.sort((a,b)=>{
if(a<b){
return -1
}else if(a>b){
return 1
}
return 0
})
console.log(arr2)