riddlr
@riddlr

Почему reduce возвращает undefined?

Надо преобразовать массив в объект, где ключами будут айдишники

const array = [
  {id: '1', content: 'Some stuff'},
  {id: '2', content: 'Some other stuff'},
  {id: '3', content: 'Some another other stuff'}
]
const arrayToObject = (array) => {
  array.reduce((obj, item) => {
    obj[item._id] = item
    return obj
  }, {})
}
const newObject = arrayToObject(array)
console.log('newObject', newObject)


Возвращается undefined. Почему?
И как лучше решить задачу преобразования массива в такой объект?
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const arrayToObject = (array) => {
  array.reduce(...

Надо добавить return или убрать фигурные скобки.

{id: '1', content: 'Some stuff'},

obj[item._id] = item

Почему в первом случае у id подчёркивания нет, а во втором есть? - ведь подразумевается, что это один и тот же id, вроде как.

как лучше решить задачу преобразования массива в такой объект?

Раз уж решили сделать функцию, пусть будет возможность указывать, значения какого свойства следует использовать в качестве ключей:

const arrToObj = (arr, key) => arr.reduce((acc, n) => (acc[n[key]] = n, acc), {});

const obj = arrToObj(arr, 'id');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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