Javascript 有没有办法防止Chrome控制台中的自动排序?

Javascript 有没有办法防止Chrome控制台中的自动排序?,javascript,google-chrome,google-chrome-devtools,javascript-objects,Javascript,Google Chrome,Google Chrome Devtools,Javascript Objects,我正在处理一个bug,它是对象中属性顺序的结果。是的,也许在这种情况下使用数组会更好,但这不是问题的重点 当我将对象打印到控制台时,它会自动为我排序,这在本例中很烦人 在此屏幕截图中,您可以看到即时预览(顶部的灰色文本)未排序,但当您打开对象时,它已排序 内部属性也是如此。注意上面屏幕截图中的项目“0.180-0.299”,以及它的属性在即时预览中没有正确排序。但当我们打开它们时,它们是: 通常这很方便,但我想知道是否有办法暂时禁用此功能 下面是它在React-dev工具中的外观: 我认为c

我正在处理一个bug,它是对象中属性顺序的结果。是的,也许在这种情况下使用数组会更好,但这不是问题的重点

当我将对象打印到控制台时,它会自动为我排序,这在本例中很烦人

在此屏幕截图中,您可以看到即时预览(顶部的灰色文本)未排序,但当您打开对象时,它已排序

内部属性也是如此。注意上面屏幕截图中的项目“0.180-0.299”,以及它的属性在即时预览中没有正确排序。但当我们打开它们时,它们是:

通常这很方便,但我想知道是否有办法暂时禁用此功能

下面是它在React-dev工具中的外观:


我认为chrome存储和获取对象的方式可能就是这样。我似乎无法证明它实际上存储了对象的顺序。是什么让您确定它的存储方式不同

const a={2:{d:1,e:1,a:1},3:{d:1,e:1,a:1},1:{d:1,e:1,a:1};
常量键=对象键(a);
对于(让钥匙中的钥匙){
console.log(键)
console.log(一个[key]);
for(让Object.keys的embeddedKey(一个[key])){
console.log(嵌入式密钥);
}
}
log(JSON.stringify(a));
log('----下划线--');
_.每个(a,(val,key)=>{
控制台日志(键);
console.log(val)
_.每个(val,(embeddedVal,embeddedKey)=>{
console.log(嵌入式密钥);
});
});

我认为对象属性顺序不在ES规范中,因此根据JSON,您不应该对其进行断言,而不是对数字键。stringify per Mike的回答起到了作用,尽管它不如能够折叠属性状态下的文本那么好。pricingData在预览中的顺序是这样的(在打开对象之前) : 0.180..., 0.230..., 0.040.... 所以我想这可能是储存在某个地方作为它的初始顺序。我在OP中添加了一个图像,描述了它在React-dev工具中的样子。我知道你在说什么,但是你怎么在没有排序的对象上迭代呢?当我使用Object.keys时,它仍在对排序对象进行迭代。可以在这里找到它的源代码,据我所知,它没有使用Object.keys:我更新了我的解决方案。我想我知道发生了什么事了。安瑟有正确的解决办法。