我对Object.entries()[i]感到困惑

时间:2018-06-02 06:01:55

标签: javascript object documentation

我已查看过此页:mozilla documentation

我不明白为什么索引0用:

const object3 = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.entries(object3)[0]);

// expected output: Array ["100", "a"] <== i thought of this

相反,文档说你得到:

// expected output: Array ["2", "b"]

有人可以解释原因吗?

1 个答案:

答案 0 :(得分:1)

文档说Object.entries返回给定对象的数组,可枚举属性[key,value]对。所以,如果你看一下这个陈述,那就太令人困惑了

const object3 = { 100: 'a', 2: 'b', 7: 'c' };

并在致电["2", "b"]时收到Object.entries(object3)[0]

执行此操作Object.entries(object3)[0]时,您正在访问此函数Object.entries(object)返回的索引为0的对。此数组的顺序与您首先定义object3的方式无关。根据文档的顺序与a提供的顺序相同 for...in循环。我在对象上运行for ... in循环,这就是我得到的顺序。

2,7,100

这就是您获得["2", "b"]而不是["100", "a"]的原因。正如其他人在此提到的那样,顺序似乎是那样,因为2 <7 <100。