Глубоко вложенный объект. - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь уменьшить глубоко вложенный объект, но получаю ошибки. У меня есть плоский массив объектов, которые включают player_id, character_id, scene_id и логическое поле. Я пытаюсь сделать результирующий объект похожим на это:

player_id: {
  scenario_id: {
    played: {
      character_id1: true,
      character_id2: true,
    },
  },
}

Мой оператор сокращения:

const arr = [
  {
    player_id: 1,
    scenario_id: 1,
    character_id: 1,
    played: true,
  },
  {
    player_id: 1,
    scenario_id: 2,
    character_id: 2,
    played: true,
  },
];

arr.reduce((prev, next) => {
  if (!prev[next.player_id]) {
    prev[next.player_id] = {};
  }
  prev[next.player_id] = {
    ...prev[next.player_id],
    [next.scenario_id]: {
      ...prev[next.player_id][next.scenario_id],
      played: next.played ? {
        ...prev[next.player_id][next.scenario_id].played,
        [next.character_id]: true,
      } : {},
   };
    return prev;
 }, {});

Когда я запускаю это, я получаю сообщение об ошибке, чтосвойство чтения сыграно из неопределённого.

Есть мысли?

...