Я пытаюсь уменьшить глубоко вложенный объект, но получаю ошибки. У меня есть плоский массив объектов, которые включают 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;
}, {});
Когда я запускаю это, я получаю сообщение об ошибке, чтосвойство чтения сыграно из неопределённого.
Есть мысли?