JavaScript。如果数组包含重复数字,则数组 .sort() 方法为 Chrome 和 Firefox 返回不同的结果

Ser*_*zzo 3 javascript arrays sorting firefox google-chrome

我有包含随机数的数组。当我尝试通过.sort()方法对这个数组进行排序时,如果数组包含重复的数字,结果会有所不同。以下代码在 Chrome 和 Firefox 中的工作方式不同:

[1,2,3,4,5,6,7,8,9,2,15,3,4,5,1,2,3,4,0,2,3].sort(function(a, b) {
  console.log("a=", a, "b=", b)
})
Run Code Online (Sandbox Code Playgroud)

Plunker:http ://plnkr.co/edit/Ocm1ZSXgkoCM7FQeH0v5

它有错误吗?如何修复此行为以在 Chrome 和 FF 中获得相同的结果?

Nin*_*olz 6

它使用适当的返回值。

var array = [1,2,3,4,5,6,7,8,9,2,15,3,4,5,1,2,3,4,0,2,3];

array.sort(function(a, b) {
    return a - b;
});
console.log(array);

array.sort(function(a, b) {
    return (a & 1) - (b & 1) || a - b;
});
console.log(array);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)