我想以一种总是一种类型的元素排在第一位的方式对数组进行排序。除此之外,顺序无关紧要。我写了以下内容,继续我的一天。
["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;
})