所以我基本上试着说"给我所有未添加到购物车的所有添加物品"我的过滤功能如下。如果在cartItems ids中找不到任何addedItems产品ID,那么它应该返回这些项目。但是当我知道addItems id与任何cartItems id不同时,unaddedCartItems是一个空数组。有谁知道如何实现这个目标?
const unaddedCartItems = addedItems.filter((addedItem) => {
cartItems.forEach((cartItem) => {
return cartItem.id !== addedItem.productId;
});
});
答案 0 :(得分:2)
这是因为您的return
嵌套在forEach
下,并且您不会在filter
中返回该值。相反,请使用find
:
const unaddedCartItems = addedItems.filter( addedItem => {
return !cartItems.find( cartItem => cartItem.id === addedItem.productId );
});
find
循环遍历数组,直到找到匹配的项目。这意味着如果它在cartItems
中找到了id,它将立即停止循环并返回该项。
答案 1 :(得分:2)
使用some
会在这里工作吗?
const unaddedCartItems = addedItems.filter((addedItem) =>
!cartItems.some(cartItem => cartItem.id === addedItem.productId);
答案 2 :(得分:0)
因为您的返回嵌套在forEach下,并且您没有在过滤器中返回该值