Задать вопрос
@DashaPoliazzz

Как работает .reduce?

Как работает .reduce, когда нужно собрать "объект" из массива?

const tasks = [
  {
    _id: '5d2ca9e2e03d40b326596aa7',
    completed: true,
    body:
      'Occaecat non ea quis occaecat ad culpa amet deserunt incididunt elit fugiat pariatur. Exercitation commodo culpa in veniam proident laboris in. Excepteur cupidatat eiusmod dolor consectetur exercitation nulla aliqua veniam fugiat irure mollit. Eu dolor dolor excepteur pariatur aute do do ut pariatur consequat reprehenderit deserunt.\r\n',
    title: 'Eu ea incididunt sunt consectetur fugiat non.',
  },
  {
    _id: '5d2ca9e29c8a94095c1288e0',
    completed: false,
    body:
      'Aliquip cupidatat ex adipisicing veniam do tempor. Lorem nulla adipisicing et esse cupidatat qui deserunt in fugiat duis est qui. Est adipisicing ipsum qui cupidatat exercitation. Cupidatat aliqua deserunt id deserunt excepteur nostrud culpa eu voluptate excepteur. Cillum officia proident anim aliquip. Dolore veniam qui reprehenderit voluptate non id anim.\r\n',
    title:
      'Deserunt laborum id consectetur pariatur veniam occaecat occaecat tempor voluptate pariatur nulla reprehenderit ipsum.',
  },
  {
    _id: '5d2ca9e2e03d40b3232496aa7',
    completed: true,
    body:
      'Occaecat non ea quis occaecat ad culpa amet deserunt incididunt elit fugiat pariatur. Exercitation commodo culpa in veniam proident laboris in. Excepteur cupidatat eiusmod dolor consectetur exercitation nulla aliqua veniam fugiat irure mollit. Eu dolor dolor excepteur pariatur aute do do ut pariatur consequat reprehenderit deserunt.\r\n',
    title: 'Eu ea incididunt sunt consectetur fugiat non.',
  },
  {
    _id: '5d2ca9e29c8a94095564788e0',
    completed: false,
    body:
      'Aliquip cupidatat ex adipisicing veniam do tempor. Lorem nulla adipisicing et esse cupidatat qui deserunt in fugiat duis est qui. Est adipisicing ipsum qui cupidatat exercitation. Cupidatat aliqua deserunt id deserunt excepteur nostrud culpa eu voluptate excepteur. Cillum officia proident anim aliquip. Dolore veniam qui reprehenderit voluptate non id anim.\r\n',
    title:
      'Deserunt laborum id consectetur pariatur veniam occaecat occaecat tempor voluptate pariatur nulla reprehenderit ipsum.',
  },
];

(function (arrOfTasks) {

  const objOfObj = arrOfTasks.reduce((acc, task) => {
    acc[task._id] = task;
    return acc;
  }, {});

  console.log(objOfObj);

})(tasks);


Вопрос. Почему нужно обращаться к аккумулятору как acc[task._id]? Аккумулятором ведь выступает 1 объект в этом массиве. Почему при обращении к acc как acc._id мы получим другой результатат?

const objOfObj = arrOfTasks.reduce((acc, task) => {
    acc._id = task;
    return acc;
  }, {});

// return _id: {_id: "5d2ca9e29c8a94095564788e0", completed: false, body: "Aliquip cupidatat ex adipisicing veniam do tempor.…veniam qui reprehenderit voluptate non id anim.\r\n", title: "Deserunt laborum id consectetur pariatur veniam oc…por voluptate pariatur nulla reprehenderit ipsum."}
[[Prototype]]: Object
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Средний 3 комментария
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Аккумулятором ведь выступает 1 объект в этом массиве.

Аккумулятор тут сначала новый пустой объект {}
На каждой итерации ему добавляется новое свойство, значением которого ставится очередной элемент массива.

Было: [ {id: 'a'}, {id: 'b'}, {id: 'c'} ]
Стало:
{
  a: {id: 'a'},
  b: {id: 'b'},
  c: {id: 'c'}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы