У меня есть массив объектов, который похож на этот в моем состоянии реакции:
timers:
{
id:"-LL-YVYNC_BGirSn1Ydu"
title: "Project Title"
project: "Project Name",
elapsed: 0,
runningSince: 0,
},
{
id:"-LL-YVYNC_BGirSn1Ydu-2",
title: "Project Title 2"
project: "Project Name",
elapsed: 0,
runningSince: 0,
},
{
id:"-LL-YVYNC_BGirSn1Ydu-3",
title: "Project Title 3"
project: "Project Name 2",
elapsed: 0,
runningSince: 0,
}
Иногда мне нужно массово удалить «таймеры» с тем же «проектом» и обновить состояние без них. У меня есть массив, как:
items=["-LL-YVYNC_BGirSn1Ydu", "-LL-YVYNC_BGirSn1Ydu-2"]
содержит идентификаторы предметов, которые мне нужно удалить.
Я использую этот метод для достижения результата:
handleDeleteProject = (projectId)=>{
//Creates the array with the id of removing elements
let rObject = this.findTimers(projectId);
for (const key of Object.keys(rObject)){
tObject=[...this.state.timers];
tObject = tObject.filter(timer=>timer.id !== rObject[key]);
this.setState({
timers: tObject
})
}
}
Проблема в том, что элементы фильтруются, но для каждого цикла «tObject» имеет одинаковые значения начального элемента, поэтому в конце цикла у меня есть объект, отфильтрованный только по последнему идентификатору в массиве.
Как можно убрать все элементы из состояния, с или без «фильтра».
Благодаря.