【发布时间】:2020-10-16 21:22:21
【问题描述】:
我在 Windows 10 上运行最新的 Firefox 和 Chrome。我相信 Mac 上也存在同样的问题。
当我有a compare function 时,有人可以向我解释为什么当我console.log a 和 b 时,Chrome 中的结果与 Firefox 中的结果相反。不过奇怪的是,排序后的结果是一样的,这没有任何意义:
var arr = [3, 1, 2];
var sorted_arr = arr.sort(function(a, b) {
console.log("a, b = ", a, b);
return a - b;
});
console.log(sorted_arr);
console.log 的第一行在 Chrome 中显示为a, b = 1 3,而在 Firefox 中显示为a, b = 3 1。
【问题讨论】:
-
“排序后的结果是一样的,没有任何意义” - 为什么不呢?您的比较函数仅被调用以确定两个元素中的哪一个应该在排序中排在第一位,它不会告诉您排序是如何实现的
-
@UnholySheep,因为我没有遇到任何其他 JS 方法,它们要么交换不同浏览器中的参数顺序,要么本质上处理 +1 的方式与另一个浏览器处理 -1 的方式相同。跨度>
-
所以如果
a = 2和b = 5。顺序有所不同2 - 5 = -3和5 - 2 = 3。然而结果是一样的,这是最初的问题。此页面上的答案都没有真正回答 OP 的问题。
标签: javascript arrays sorting