【发布时间】:2020-01-23 14:12:22
【问题描述】:
今天早上我在处理票时遇到了最奇怪的行为。如果您在运行Object.keys 后看到下面的内容,则键的顺序已更改,在F 之后留下了P。
我尝试了以下方法:
-
Object.entries- 得到与Object.keys相同的结果 -
For loop- 得到与Object.keys相同的结果 - 我认为
#可能会影响排序,所以我 删除它并重新运行测试。 - 得到与Object.keys相同的结果
我查看了 ECMAScript 规范,但情况并非如此。任何想法可能导致这种行为?
P.S 我通过在数组上运行 .sort() 解决了这个问题,但我很想知道是什么导致键出现故障。
【问题讨论】:
-
据我所知,规范并没有告诉任何人如何订购钥匙。浏览器以不同的方式对键进行排序。您永远不应该依赖键的顺序,这就是
Array的用途。 -
在 javasciprt 中不保证键的顺序,但是大多数情况下,字符串键是按照它们添加的顺序
-
@KrzysztofKrzeszewski 大多数时候这意味着什么,要么是,要么不是,或者我们在谈论不同的浏览器实现
-
排序 behavior 由规范定义,但顺序与属性名称无关,除了“数字”属性名称在其他之前。事实上,以任何方式依赖对象属性名称排序都是一种极其脆弱的编码实践。
-
如果您清除缓存并再次运行它。它会显示相同的顺序吗?
标签: javascript arrays sorting object