Javascript Object.values订单保证
是否保证Javascript Object.values订单保证,javascript,ecmascript-6,Javascript,Ecmascript 6,是否保证Object.values(常量)将返回[1,2] 在上,它表示它遵循for…in,它以原始插入顺序在中迭代 在某些情况下,它声称,getOwnPropertyNames的订单是有保证的,但在中,的订单是没有保证的 另外,他们可以使用什么实现来保证插入顺序?如果使用某种排序的已排序集合来跟踪顺序,是否会导致插入/删除对象属性的O(logn)复杂性 const CONSTANT = Object.freeze({a: 1, b: 2}); 将保证顺序。是的,如果使用数组控制迭代。问题是直
Object.values(常量)
将返回[1,2]
在上,它表示它遵循for…in
,它以原始插入顺序在中迭代
在某些情况下,它声称,getOwnPropertyNames
的订单是有保证的,但在中,的订单是没有保证的
另外,他们可以使用什么实现来保证插入顺序?如果使用某种排序的已排序集合来跟踪顺序,是否会导致插入/删除对象属性的O(logn)复杂性
const CONSTANT = Object.freeze({a: 1, b: 2});
将保证顺序。是的,如果使用数组控制迭代。问题是直接迭代对象的属性。我认为这里的底线是:不能保证顺序是[1,2],也不能保证它是插入顺序。它可能是[1,2]或[2,1],但您可以保证对象的顺序。值
将与中…的相同,并且它不会改变,除非对象本身改变。@K.Kirsz说,for…in语句迭代对象的可枚举属性,按原始插入顺序。
MDN的语句不规范。问题不特定于Object.values。这完全取决于JS引擎如何处理对象属性顺序。
for (let v of ['a','b']) {
console.log(CONSTANT[v])
}