JS,通过一个数组映射,当它与另一个数组的值相同时进行过滤

JS, mapping through an array for filtering when it has the same value of another array

我有一个问题:Js 映射过滤器数组和循环

我有两个 ObjectsID 数组(favorite 和 inCommon)。我将第一个映射到以检查它何时具有与另一个数组相同的值,然后将它的值添加到状态(状态正在工作)。

如果第二个数组 (inCommon) 只有一个值,此代码可以正常工作,但我不知道当第二个数组有多个值时该怎么做(我在想循环吗?) 感谢任何愿意提供帮助的人


const [favorite, setFavorite] = useContext(FavoriteContext);
const [ cart, setCart ] = useContext(CartContext);
favorite and cart array= [{_id: '', name: ''}, {}]
const addToCart = (favorite) => {
    const checkedCart = cart.map(item => item._id)
    let checkedFavorite = favorite.map(item => item._id)
    const inCommon = checkedFavorite.filter(item => checkedCart.includes(item))
    favorite.map(item => {if(item._id !== inCommon.toString()) 
      {setCart((prev) => {return [item, ...prev]})
      console.log(item._id)
    }})
  }

错误在 if(item._id !== inCommon.toString())inCommon 是一个数组,当它只有 1 个元素时它会 return 值,但当它有多个项目时它会return 逗号分隔值,例如 id1,id2,id3... .

您可以像在 item => checkedCart.includes(item)

中一样使用 includes()
if( !inCommon.includes(item._id)){...}