我想对数组进行排序,使一种类型的元素始终排在第一位。除此之外,顺序无关紧要。我写了以下内容,然后继续我的一天。
["a","b","a","b"].sort((x,y) => x === "b" ? 0 : 1);
Chrome给了我预期的结果;
["b","b","a","a"]
但是IE和Safari没有。
我知道如何获得想要的结果,并且我想问题在于浏览器在项目之间进行比较的方式,但是我很好奇更深入的解释。
答案 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;
})