为什么Chrome的排序方式与众不同?

时间:2018-10-05 14:23:15

标签: javascript sorting

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

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

Chrome给了我预期的结果;

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

但是IE和Safari没有。

我知道如何获得想要的结果,并且我想问题在于浏览器在项目之间进行比较的方式,但是我很好奇更深入的解释。

1 个答案:

答案 0 :(得分:3)

您的问题在here中得到回答:

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

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