为什么排序在 Chrome 中表现不同?



我想以一种总是一种类型的元素排在第一位的方式对数组进行排序。除此之外,顺序无关紧要。我写了以下内容,继续我的一天。

["a","b","a","b"].sort((x,y) => x === "b" ? 0 : 1);

铬给了我预期的结果;

["b","b","a","a"]

但IE和Safari没有。

我知道如何获得我想要的结果,我想问题出在浏览器对项目进行比较的方式上,但我对更深入的解释感到好奇。

您的问题在这里得到解答:

简而言之,您的比较函数不正确,它应该返回1,-1, 0作为返回值,例如:

array.sort(function(a, b) {
if (a.id < b.id) return -1;
if (a.id > b.id) return 1;
return 0;
})

最新更新