【发布时间】:2021-08-04 06:06:04
【问题描述】:
嘿,我正在制作一个送餐应用,我有一个数据列表。如果条件匹配,我想删除该项目:
- 如果 id 和 subDataId 匹配,则删除该项目。
- 如果只有 id 匹配(并且我没有 subDataId 可以用于比较),则删除该项目。
这是我的数据
state: [
{
id: 1,
quantity: 4,
price: 120,
subDataId: 1,
itemTotalPrice: 480
},
{
id: 1,
quantity: 5,
price: 70,
subDataId: 2,
itemTotalPrice: 350
},
{
id: 2,
quantity: 3,
price: 140,
subDataId: 1,
itemTotalPrice: 420
},
{
id: 2,
quantity: 5,
price: 80,
subDataId: 2,
itemTotalPrice: 400
},
{
id: 3,
quantity: 6,
price: 60,
itemTotalPrice: 360
}
],
这是我的代码
let data = {id: 1, subDataId: 2};
// let data ={id: 3}
if (data.subDataId) {
const filtered = state.filter((filterItem) => {
return (
filterItem.id !== data.id && filterItem.subDataId !== data.subDataId
); });
if (filtered.length !== 0) {
return (state = filtered);
} else {
return [...state];
}
} else {
const filtered = state.filter((filterItem) => {
return filterItem.id !== data.id;
});
if (filtered.length !== 0) {
return (state = filtered);
} else {
return [...state];
}
}
代码无法正常工作,删除了几项而不是一项。
EDIT 伙计们,伙计们,我想检查 id 和 subdDataId 是否匹配,然后删除该项目并返回一个包含其余部分的数组数据,如果只有 id 匹配,则执行相同操作。
【问题讨论】:
标签: javascript arrays object filter