如何对比两个数组的指定值并仅从其中一个数组中删除该值
实现方案
核心逻辑分两步执行即可:
- 先判断待删除的指定值是否存在于主数组
arr0中 - 如果存在,遍历过滤
arr1,移除所有和指定值相等的元素
基础实现代码(适用于绝大多数场景)
// 待删除的指定值,可根据需求替换 const target = 9; // 判断target是否在arr0中存在 if (arr0.includes(target)) { // 过滤arr1,仅保留不等于target的元素 arr1 = arr1.filter(item => item !== target); }
完整可运行示例(包含你提供的随机数组生成逻辑)
const arrLength = 10; const arr0 = []; let arr1 = []; // 生成随机数组 for (let i=0; i<arrLength; i++) { arr0.push(Math.floor(Math.random() * 10)); arr1.push(Math.floor(Math.random() * 10)); } // 核心处理逻辑 const target = 9; if (arr0.includes(target)) { arr1 = arr1.filter(item => item !== target); } // 打印验证结果 console.log('arr0:', arr0); console.log('处理后的arr1:', arr1);
测试用例验证(匹配你给出的示例)
输入你提供的示例参数运行:
const arr0 = [9, 6, 4, 3, 4, 7, 1, 0, 0, 8]; let arr1 = [2, 4, 7, 2, 9, 4, 0, 3, 6, 2]; const target = 9; if (arr0.includes(target)) { arr1 = arr1.filter(item => item !== target); } console.log(arr1); // 输出:[2, 4, 7, 2, 4, 0, 3, 6, 2],完全符合预期
大数据量优化方案
如果arr0的元素数量很大(>1000条),可以先把arr0转成Set提升查询效率:
const arr0Set = new Set(arr0); const target = 9; if (arr0Set.has(target)) { arr1 = arr1.filter(item => item !== target); }
内容的提问来源于stack exchange,提问作者nezza1
相关产品推荐
相关产品推荐

