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)){...}
我有一个问题: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)){...}