通过对象返回的键的顺序.对象中的键
Order of keys returned via Object.keys from an object
对象键不保证是有序的。键可以是数字或字符串。
object .keys(yourObject)以字符串形式返回该对象上的键数组。
在Chrome, Safari, Firefox和node.js中,如果您在对象上创建数字键并使用object .keys()返回它们,它们都是按字典顺序排列的。只要字符串代表它们的文字版本(例如没有前导0),那么它们就是按数字顺序排列的。
我想回答的是Object.keys() 是否保证键按字典顺序返回,或者这只是流行的浏览器/js环境中实际实现的工件。
我认为顺序是特定于实现的。来自EcmaScript规范的15.2.3.14节,Object.keys:
如果实现为for-in语句定义了特定的枚举顺序,则必须在该算法的第5步中使用相同的枚举顺序。
("此算法"指规范中生成Object.keys
返回值的算法)
从规范的12.6.4节(关于for-in
语句):
列举属性的机制和顺序(步骤6)。第一个算法中的A,步骤7。
还请注意,字典顺序与数字顺序不同。例如,如果键为"1"、"2"answers"10",则字典顺序为"1"、"10"、"2"。(我测试的所有JS引擎都返回数字顺序:"1","2","10")
相关文章:
- Javascript-根据赋值顺序,按键合并对象数组
- 如何按对象反转Angular ngRepeat的顺序's键,这些键是数字键
- 按特定顺序对对象进行排序—Angular
- 如何在 JavaScript 中以递增顺序在对象中添加属性
- JavaScript:指定对象中属性的顺序
- 对象的顺序已更改
- Javascript对象多个循环,相同的顺序
- 如何使用下划线根据自定义排序顺序对对象数组进行排序
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- AngularJS-ngRepeat对对象的返回顺序与vanillar.in循环不同
- ng重复javascript对象中未按预期顺序重复的项
- 如何像java脚本中给定的对象一样,将对象的属性保持在相同的顺序
- javascript:按实际顺序获取对象项
- 在JavaScript中,对象如何跟踪键/值的插入顺序
- 如何根据不同排序顺序的多个值对json对象进行排序
- three.js:透明对象根据相机角度按错误顺序渲染
- 按数组顺序排列对象
- 通过多次调用按顺序将对象插入数组
- jQuery - 本地存储排序字符串化对象顺序
- 重置对象顺序