JS实现过滤数组X,排除在数组Y中出现次数为质数的元素
实现方案
你已经完成了Y数组的元素频次统计和质数判断的基础逻辑,只需要补全两个部分即可:
- 修正质数判断函数的边界异常:你当前的
checkPrime函数会错误把≤1的数判定为质数,需要补充边界判断 - 遍历X数组过滤符合要求的元素
完整可运行代码
const arrX = [2, 3, 9, 2, 5, 1, 3, 7, 10] const arrY = [2, 1, 3, 4, 3, 10, 6, 6, 1, 7, 10, 10, 10] const arrZ = [] // 用对象存频次比数组更合理,避免稀疏数组问题 const counts = {}; // 统计Y数组元素出现次数 for (const num of arrY) { counts[num] = counts[num] ? counts[num] + 1 : 1; } // 修正后的质数判断:小于等于1的数都不是质数 const checkPrime = num => { if (num <= 1) return false; for (let i = 2; i < num; i++) if (num % i === 0) return false return true } // 遍历X数组过滤元素 for (const num of arrX) { const occurCount = counts[num] || 0; // 仅当出现次数不是质数时保留元素 if (!checkPrime(occurCount)) { arrZ.push(num); } } console.log(arrZ); // 输出 [2, 9, 2, 5, 7, 10] 符合预期
逻辑验证
各元素在Y数组的出现次数和判断结果如下:
- 2在Y中出现1次:1不是质数 → 保留
- 3在Y中出现2次:2是质数 → 排除
- 9、5不在Y中出现:次数为0,不是质数 → 保留
- 1在Y中出现2次:2是质数 → 排除
- 7在Y中出现1次:1不是质数 → 保留
- 10在Y中出现4次:4不是质数 → 保留
内容的提问来源于stack exchange,提问作者bumpyroad44
相关产品推荐
相关产品推荐

