如何在React Native中使用另一个数组过滤数组?

时间:2018-03-27 17:35:14

标签: javascript reactjs react-native

所以我基本上试着说"给我所有未添加到购物车的所有添加物品"我的过滤功能如下。如果在cartItems ids中找不到任何addedItems产品ID,那么它应该返回这些项目。但是当我知道addItems id与任何cartItems id不同时,unaddedCartItems是一个空数组。有谁知道如何实现这个目标?

const unaddedCartItems = addedItems.filter((addedItem) => {
    cartItems.forEach((cartItem) => {
        return cartItem.id !== addedItem.productId;
    });
});

3 个答案:

答案 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下,并且您没有在过滤器中返回该值