今天早上我在处理票证时遇到了最奇怪的行为。如果运行 Object.keys
后看到以下内容,按键的顺序已更改,留下 P
之后F
。
我尝试了以下方法:
-
Object.entries
- 得到与Object.keys
相同的结果 -
For loop
- 得到与Object.keys
相同的结果 - 我想也许
#
正在放弃排序,所以我 删除它并重新运行测试。 - 得到与Object.keys
相同的结果
我查看了 ECMAScript 规范,情况不应该如此。有什么想法可能导致这种行为吗?
P.S 我通过在数组上运行 .sort() 解决了这个问题,但很想知道是什么导致键乱序。
最佳答案
因此,您正在尝试将映射(无序)转换为数组(有序)。某些浏览器根据键添加到对象的顺序转储键。有些人则以其他方式进行。由于它依赖于浏览器,因此您最好的目标就是对所述列表进行排序。
我建议在将其转储到数组后,您应该.sort()
按照您认为合适的方式进行排序。它接受您需要的功能。当然,它是特定于情况的,因此您可能需要利用可选的传入函数进行排序,以最适合您的用例的方式对其进行比较。由于排序的输入可以像您喜欢的那样复杂,因此您还可以使用它对所述值的内容进行排序,而不仅仅是对键进行排序。
关于javascript - 运行 Object.keys 后对象键的顺序不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063595/