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

#arrays #object

Вопрос:

Когда я использую Object.keys преобразование объекта в массив, а затем создаю другой массив, который выглядит одинаково, они получают разные результаты. Не могли бы вы объяснить, пожалуйста, как keys.forEach() узнать значения ключей человека, в то время test.forEach() как они отображаются как «неопределенные»:

 const person = {
    key1: 'value1',
    key2: 'value2',
    key3: 'value3'
}

const keys = Object.keys(person)

const test = ['1', '2', '3']

keys.forEach(key => {
    console.log(key)
    console.log(person[key])
})

test.forEach(some => {
    console.log(some)
    console.log(person[some])
})

// key1
// value1
// key2
// value2
// key3
// value3
// 1
// undefined
// 2
// undefined
// 3
// undefined
 

Ответ №1:

Это связано с тем, что тестовый массив имеет значения ['1', '2', '3'] вместо ['key1', 'key2', 'key3']

То , что вы видите в undefined выходных person['1'] данных, и т. Д., Которые на самом деле не определены

Ответ №2:

Метод forEach() выполняет предоставленную функцию один раз для каждого элемента массива.

 var obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}



  var result = Object.keys(obj).map(function(key) {
      return [Number(key), obj[key]];
    });
    
    console.log(result);