我为此使用 React,但概念是在 javascript 中。因此,为了简单起见,我希望我可以省略 React 代码。
我有两个需要过滤掉的数组。我的目标是映射一个数组并检查该对象的属性是否与另一个数组的对象中的属性匹配。
第一个数组如下所示:
[{id: 1}, {id: 2}, {id: 3}, {id: 4}]
第二个看起来像这样:
[{id: 3}, {id: 4}]
所以如果一个对象有相同的id
属性作为另一个数组中的对象,返回一个反应元素/任何东西。
这是我要做的事情,但它只遍历索引并比较它们。这似乎正确地循环第一个数组,但我似乎无法通过索引以外的任何内容循环第二个数组。
return arr1.map((e, i) => {
return if (e.id === arr2[i].id) {
return <div>Match</div>
} else {
return <div>No Match</div>
}
})
你的问题是你正在逐个索引进行比较。你想知道 arr1 中的元素是否是anywhere在 arr2 中,对吧?
我会用arr2.filter
搜索 arr2 的全部内容。所以你会得到这样的东西:
return arr1.map((e1, i) => {
if (arr2.filter(e2 => e2.id === e1.id).length > 0) { // If there's a match
return <div>Match</div>
} else {
return <div>No Match</div>
}
})
更新:
正如评论中建议的那样Array.some
这里更好:
return arr1.map((e1, i) => {
if (arr2.some(e2 => e2.id === e1.id)) { // If there's a match
return <div>Match</div>
} else {
return <div>No Match</div>
}
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)