我正在尝试减少深层嵌套的对象,但出现错误。我有一个平面对象数组,其中包括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;
}, {});
运行此命令时,出现错误,提示它无法读取未定义播放的属性。
有什么想法吗?