JavaScript数组比对:判断数组A是否包含数组B元素并生成结果数组
问题解决:数组元素存在性比对
错误原因分析
你的代码存在两个核心问题:
- 判断逻辑完全颠倒:你用数组A(
allObjectivesArray)去检查是否包含某个值,而正确逻辑应该是检查数组A的当前元素是否存在于数组B(reducedArr[0])中。 - 不必要的索引取值:
reducedArr[0][element - 1]是多余的错误写法,直接使用遍历到的element即可。
这两个问题导致了你得到错误结果,比如第一个元素1,你实际在判断数组A是否包含reducedArr[0][0](也就是2),数组A确实包含2,所以错误地push了true,而非判断1是否在数组B中。
正确代码实现
方式1:使用forEach
let isAdded = []; allObjectivesArray.forEach(element => { // 直接检查当前元素是否存在于数组B中 isAdded.push(reducedArr[0].includes(element)); });
方式2:使用map(更简洁)
map方法可直接生成结果数组,无需手动push:
const isAdded = allObjectivesArray.map(element => reducedArr[0].includes(element));
验证结果
运行上述代码后,isAdded会得到预期结果:[false, true, false, true, false, false, false],完全符合需求。
内容的提问来源于stack exchange,提问作者Psycko
相关产品推荐
相关产品推荐

