深层嵌套object.reduce

时间:2019-11-10 14:30:43

标签: javascript reduce

我正在尝试减少深层嵌套的对象,但出现错误。我有一个平面对象数组,其中包括player_id,character_id,scenario_id和一个布尔字段。我试图使生成的对象看起来像这样:

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

我的reduce语句是:

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;
 }, {});

运行此命令时,出现错误,提示它无法读取未定义播放的属性。

有什么想法吗?

0 个答案:

没有答案