-1

我正在思考这个问题:

chrome和firefox中的console.log在排序前后显示相同的结果(排序后的结果)。playcode.io 编辑器中的快速测试显示了预期的结果。chrome 中的 alert 方法也可以正常工作。有人知道这件事的背景吗?

找到这个线程: JavaScript console.log 执行顺序?

但我真的不明白...

let data = [

    {A: 100232}, 
    {A: 223434},
    {A: 233434},
    {A: 645455},
    {A: 212334},
    {A: 34343},
    {A: 743434},

];

console.log(data);
data.sort(function(a, b){return b.A - a.A}); 
console.log(data);
4

1 回答 1

1

这不是问题,这是console.log某些浏览器中的工作方式。它正在打印一个指向该对象的链接,一旦您在控制台中打开该对象,它就会显示该对象的当前版本。请参阅文档

不要使用console.log(obj),使用console.log(JSON.parse(JSON.stringify(obj)))。

这样你就可以确定在你记录它的那一刻你看到了 obj 的值。否则,许多浏览器会提供实时视图,该视图会随着值的变化而不断更新。这可能不是你想要的。

要在控制台记录时查看对象的版本,请尝试以下操作:

let data = [

    {A: 100232}, 
    {A: 223434},
    {A: 233434},
    {A: 645455},
    {A: 212334},
    {A: 34343},
    {A: 743434},

];

console.log(JSON.stringify(data));
data.sort(function(a, b){return b.A - a.A}); 
console.log(JSON.stringify(data));
于 2019-08-11T11:08:53.940 回答