为什么打印出使用JavaScript的Array.sort排序的数组似乎在调用Array.sort之前对数组进行排序?

时间:2018-10-10 13:16:55

标签: javascript arrays google-chrome sorting

对于以下两段代码的输出之间的差异,我感到困惑:

var x = [{'size': 3}, {'size': 2}, {'size':1}];
console.log("Before I sort, x is", x);
x.sort(function(a, b) { 
    console.log("Sorting x…");
    return a.size - b.size; 
});
console.log("After I sort, x is", x);

收益

Printing the before-and-after of sorting an array.

…这是令人惊讶的,因为“排序之前”数组似乎已排序。如果我删除了sort,则运行

var x = [{'size': 3}, {'size': 2}, {'size':1}];
console.log("Before I sort, x is", x);
// x.sort(function(a, b) {  console.log("Sorting x…");
//  return a.size - b.size; });
// console.log("After I sort, x is", x);

然后我在第一个console.log中看到了我的期望, Printing only the before sorting of the array

对此感到困惑,我也尝试打印出x[0],这是正确的,即使x的显示不是

var x = [{'size': 3}, {'size': 2}, {'size':1}];
console.log("Before I sort, x[0] is", x[0], "and x is", x);
x.sort(function(a, b) {  console.log("Sorting x…");
    return a.size - b.size; });
console.log("After I sort, x[0] is", x[0], "and x is", x);

收益

Printing the before and after of sorting the array, and the first element

…这似乎无法解释,因为即使x印刷的x[0]也一样。

有什么作用?我该如何解释这种行为?

我希望没关系,但是我正在Google Chrome 69.0.3497.100(正式版本)(64位)上运行它

谢谢!

0 个答案:

没有答案