为什么我的数组删除所有从产品id,而我说只有当产品id和尺寸/颜色存在



我有一个这样的数组:

"products": Array [
{
product_id: '1',
options: [
{
size: 'XS',
color: 'blue'
}
]
},
{
product_id: '1',
options: [
{
size: 'S',
color: 'red'
}
]
}
],

所以我想删除有效载荷等于产品id,尺寸和颜色的项目。

state.cart = state.cart.filter((el => 
el.products?.id !== action.payload.id && 
el.products?.options[0].color !== action.payload.options[0].color && 
el.products?.options[0].size !== action.payload.options[0].size
));

负载是正确的,但是他删除了两个对象。那么我做错了什么呢?

链接&&s意味着必须满足所有3个条件才能使返回值为真- id必须不匹配,颜色必须不匹配,大小必须不匹配。但你的身份确实符合。使用||代替,这样单个不匹配的值将返回true(并将结果包含在最终数组中)。

您还应该使用product_id,而不是id(因为这是您的数据结构中的键的名称)。

你也不应该直接赋值给state。假设这是在一个reducer中,并且你只想更新.cart属性,你需要

return {
...state,
cart: state.cart.filter(el =>
el.products?.product_id !== action.payload.product_id ||
el.products?.options[0].color !== action.payload.options[0].color ||
el.products?.options[0].size !== action.payload.options[0].size
)
};

相关内容

  • 没有找到相关文章

最新更新