Я запутался с Object.entries () [я] - PullRequest
0 голосов
/ 02 июня 2018

Я проверил эту страницу: Документация Mozilla

Я не понимаю, почему индекс 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"]

Кто-то может объяснить, почему?

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Документы говорят, что Object.entries возвращает массив заданных объектов, перечисляемое свойство [key,value] пар.Так что да, это сбивает с толку, если вы посмотрите на это утверждение

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

и в итоге получите ["2", "b"], когда вы позвоните Object.entries(object3)[0].

Когда вы делаете это Object.entries(object3)[0], вы получаете доступ к паре с индексом 0, возвращаемым этой функцией Object.entries(object).Порядок этого массива не имеет ничего общего с тем, как вы определили object3.Порядок в соответствии с документом такой же, как в цикле for...in.Я запустил цикл for ... in на объекте, и это то, что я получил как заказ.

2,7,100.

Вот почему вы получаете ["2", "b"] вместо ["100", "a"].Как уже упоминали другие, порядок, по-видимому, такой, потому что 2 <7 <100.</p>

0 голосов
/ 02 июня 2018

Это потому, что у объекта есть цифровые клавиши, и когда вы манипулируете объектом с помощью цифровых клавиш, JavaScript сортирует key-values в порядке возрастания значения key и поскольку у вас есть ключи 2, 7100.Таким образом, проверьте это, когда вы console.log объект Object.entries(object3) вы получите, что отсортированы, и когда вы получаете доступ к [0], вы получите Array ["2", "b"]

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

Дополнительные пояснения по сортировке объекта по возрастанию значений ключа, когда они числовые.Javascript сортирует их за кулисами.

var a = {
  10: 'ten',
  5: 'five',
  11: 'eleven',
  1: 'one'
};
console.log(a);
...