Javascript 如何根据某些规则从redux状态删除某些项
如果对象中的某个id与有效负载中的id相同,我想删除对象数组中的项 我的代码:Javascript 如何根据某些规则从redux状态删除某些项,javascript,reactjs,redux,Javascript,Reactjs,Redux,如果对象中的某个id与有效负载中的id相同,我想删除对象数组中的项 我的代码: case "MINUS_PRODUCT_FROM_CART": { const arr = state.cart.forEach((item, i) => { if (item[i].id === payload.id) { arr.splice(i, 1); } }); return { ...state,
case "MINUS_PRODUCT_FROM_CART": {
const arr = state.cart.forEach((item, i) => {
if (item[i].id === payload.id) {
arr.splice(i, 1);
}
});
return {
...state,
cart: arr,
};
}
我的表情:
[
{title: "Product 1", price: "128", id: "15"},
{title: "Product 2", price: "9", id: "26"},
{title: "Product 2", price: "9", id: "26"}
]
如果有效负载id==26,我只想删除一个具有此id的对象
谢谢 IMO,您可以更简洁地编写它,而无需声明任何额外变量:
const arr = state.cart.filter((item, i) => {
return item.id !== action.payload.id;
});
return {
...state,
cart: arr,
};
return {
...state,
cart: state.cart.filter(item => item.id !== action.payload.id),
};
再次看了你的问题后,我意识到你只想删除第一个问题。我们仍然可以在此处使用过滤器,只需添加一个检查:
let removed = false;
return {
...state,
cart: state.cart.filter(item => {
if (!removed && item.id !== action.payload.id) {
removed = true;
return true;
}
return false;
}),
};
在我看来,您可以更简洁地编写它,而无需声明任何额外变量:
return {
...state,
cart: state.cart.filter(item => item.id !== action.payload.id),
};
再次看了你的问题后,我意识到你只想删除第一个问题。我们仍然可以在此处使用过滤器,只需添加一个检查:
let removed = false;
return {
...state,
cart: state.cart.filter(item => {
if (!removed && item.id !== action.payload.id) {
removed = true;
return true;
}
return false;
}),
};
只需使用过滤器返回数组。你提供的东西看起来不像你的有效载荷,而是你的购物车。您在后面说了
如果有效负载id==26
。只需使用过滤器返回数组即可。你提供的东西看起来不像你的有效载荷,而是你的购物车。你后来说如果有效负载id==26Array.filter
绝对是这里的方法Array.filter
绝对是这里的方法