У меня есть массив объектов, мне нужно удалить полный объект на основе идентификатора
Ввод:
filters: [
{
key: "status",
label: "En attente",
value: "waiting",
id: 0
},
{
key: "dateDue[min]",
label: "15/12/2019",
value: "15/12/2019",
id: 1
},
{
key: "dateDue[max]",
label: "02/02/2020",
value: "02/02/2020",
id: 2
},
{
key: "bien",
values: [
{
label: "Studio Bordeaux",
value: 36,
id: 3
},
{
label: "Studio 2",
value: 34,
id: 184
}
]
},
{
key: "type",
values: [
{
type: "receipts",
label: "Loyer",
value: "loyer",
id: 4
},
{
type: "receipts",
label: "APL",
value: "apl",
id: 5
},
{
type: "spending",
label: "taxes",
value: "taxes",
id: 6
}
]
}
]
Поэтому я создал метод removeItem с идентификатором, который должен быть удалено в параметрах
метод removeItem:
removeItem = (e, id) => {
const { filters } = this.state;
const remove = _.reject(filters, el => {
if (!_.isEmpty(el.values)) {
return el.values.find(o => o.id === id);
}
if (_.isEmpty(el.values)) {
return el.id === id;
}
});
this.setState({
filters: remove
});
};
Я использую loda sh, чтобы упростить свою работу и более конкретно _.reject Моя проблема заключается в следующее: мне удается правильно удалить объекты classi c, например
{
key: "status",
label: "En attente",
value: "waiting",
id: 0
}
, но мой метод, однако, не работает для объектов следующей формы
{
key: "bien",
values: [
{
label: "Studio Bordeaux",
value: 36,
id: 3
},
{
label: "Studio 2",
value: 34,
id: 184
}
]
},
в настоящее время весь объект удаляется не только объект в массиве значений в соответствии с его идентификатором
Вот мои коды и коробка!
Заранее благодарю за помощь