Как создать массив объектов на основе двух массивов?

Есть два массива:

const idArray = [3, 5, 6];
const nameArray = ['Dima', 'Oleg', 'Vova', 'Kate' ];

Нужно на выходе получить такой массив:

const newArray = [
  {name: 'Dima', id: 3},
  {name: 'Oleg', id: 5},
  {name: 'Vova', id: 6},
  {name: 'Kate'},
  {name: 'Vita'}
]

То есть, если id нету, то будет элемент с одним свойством name.
  • Вопрос задан
  • 141 просмотр
Решения вопроса 3
@StockholmSyndrome
const newArray = nameArray.map((name, i) => idArray[i] ? {name, id: idArray[i]} : {name});
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
function combine(keys, values) {
  const length = Math.max(0, ...values.map(n => n.length));
  const arr = Array.from({ length }, () => ({}));
  values.forEach((n, i) => n.forEach((m, j) => arr[j][keys[i]] = m));
  return arr;
}


const newArray = combine([ 'name', 'id' ], [ nameArray, idArray ]);
Ответ написан
Комментировать
@afanasiyz
Javascript-разработчик
Самый простой и очевидный вариант.

nameArray.map((elem, index) => {
  if (idArray[index]) {
    return {
      name: elem,
      id: idArray[index],
    };
  }
  return {
    name: elem,
  };
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы