Как отобразить два массива в массив объектов

#javascript #arrays #object

Вопрос:

У меня есть два массива

 keys:[key0, key1, key2, key3]
 

и

 body:[['jake', 24, 3, true], ['susan', 21, 0, true]]
 

результат, который мне нужен, это

 [{key0:jake, key1:24, key2:3, key3:true}, {key0:susan, key1:21, key2:0, key3:true}]
 

Ответ №1:

Сопоставьте ключи и значения с массивами пар [key, value] , а затем преобразуйте их в объект с помощью Object.fromEntries() (см. zipObject Функцию).

Чтобы преобразовать массив значений, используйте Array.map() с zipObject :

 const zipObject = keys => values => Object.fromEntries(keys.map((key, i) => [key, values[i]]))

const keys = ['key0', 'key1', 'key2', 'key3']

const values = [['jake', 24, 3, true], ['susan', 21, 0, true]]

const result = values.map(zipObject(keys))

console.log(result) 

Ответ №2:

 const body = [['jake', 24, 3, true], ['susan', 21, 0, true]];
const keys = ['key0', 'key1', 'key2', 'key3']
let newArray = [];

numbers.forEach((value) =>
{
    let obj={};
    keys.forEach((key,index) => 
{
        obj[`${key}`] = value[index];
        
    })
    newArray.push(obj);
    
});
console.log(newArray)
 

Ответ №3:

Это может быть один из простых способов сделать это, используя легко читаемые циклы:

 const keys = ['key0', 'key1', 'key2', 'key3'];
const body = [['jake', 24, 3, true], ['susan', 21, 0, true]];
const result = [];
for (let b of body) {
    const obj = {};
    for (let i = 0; i < b.length; i  ) {
        obj[keys[i]] = b[i];
    }
    result.push(obj);
}
console.log(result);
 

Результат:

 [
  { key0: 'jake', key1: 24, key2: 3, key3: true },
  { key0: 'susan', key1: 21, key2: 0, key3: true }
]