排序比较函数的行为不一致。函数应该返回
< 0
,
0
或
> 0
,不仅仅是
1
或
零
. 如果它不返回这些值,你就给
sort
使用错误的信息,因为您告诉它任何比较
a
所需值是否相等?不能保证
END3
将作为
一
在任何时候,所有的比较都是“相等的”,所以结果是什么是不确定的。也有可能是
SP1, END3
(同等)和
END3, SP1
(较大)将影响排序算法的假设。
var list = [{id: "SP1"}, {id: "SP4"}, {id: "END3"}, {id: "SP2"}];
console.log(list.sort(function(a, b) {
if (a.id === 'END3') {
return 1;
} else if (b.id === 'END3') {
return -1;
} else {
return 0;
}
}));