前幾天在谷歌瀏覽器中使用JavaScript中Array的sort排序字符串,發(fā)現(xiàn)排序不準確,這里記一下。
var arr=['a','d','b','c','b'];
var arr2=arr.sort((a,b)=>{
return a<b
})
console.log(arr2)

瀏覽器1

瀏覽器2
- 主要原因是該函數(shù)要比較兩個值,在第一個版本中比較函數(shù)應該具有兩個參數(shù) a 和 b,其返回值如下:
若 a 小于 b,在排序后的數(shù)組中 a 應該出現(xiàn)在 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)