代码之家  ›  专栏  ›  技术社区  ›  Jesper Palm

为什么排序在Chrome中的行为不同?

  •  0
  • Jesper Palm  · 技术社区  · 6 年前

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

    Chrome给了我预期的结果;

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

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

    1 回复  |  直到 6 年前
        1
  •  3
  •   ganjim    6 年前

    你的问题得到了答复 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;
    })