我期望下一个片段将所有内容保留在其索引中,但将特定项目排序到前面:
const sorted = ["AUS", "GBR", "GER", "USA", "ZAF"].sort(code => code === "GBR" ? -1 : 0);
console.log(sorted);
我只使用第一个元素,因为我不进行比较,只需关心第一个元素是否是 GBR
,将其放在前面,否则,就让它留在现在的位置。
它在 Chrome 上运行良好,但不知为何 Firefox 却让一切保持原来的样子。或者如果我这样做? -1 : 1
,它放置 GBR
到前面,但颠倒其余项目的顺序。
我做错了什么?
最佳答案
正如 deceze 在评论中所说:sort
回调必须采用两个参数。你只看第一个参数。如果“GBR”作为第二个参数传递,则永远不会检查它,并且结果对于所有意图和目的都是随机的。
你只需要看看第二个参数:
const sorted = ["AUS", "GBR", "GER", "USA", "ZAF"].sort((c1, c2) => c1 === "GBR" ? -1 : c2 === "GBR" ? 1 : 0);
console.log(sorted);
关于javascript - Firefox 对数组排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076924/