This question already has answers here:
JavaScript move an item of an array to the front
                            
                                (16个答案)
                            
                    
                在8个月前关闭。
        

    

我期望下一个代码片段将所有内容保留在索引中,但将特定项目放在最前面:



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/

10-11 14:19