如何判断JavaScript数组中指定元素是否达到指定出现次数?
数组元素统计与条件判断实现
给定数组:
var array = ["A", "A", "A", "B", "B", "A", "C", "B", "C"];
要实现两个判断需求:
- 检查数组中是否恰好有4个"A",满足则返回true
- 检查数组中是否同时有3个"B"和2个"C",满足则返回true,否则返回false
方法一:使用filter()统计元素数量
filter()可以筛选出目标元素,再通过length属性直接得到数量,写法简洁直观:
// 统计各元素数量 const countA = array.filter(item => item === "A").length; const countB = array.filter(item => item === "B").length; const countC = array.filter(item => item === "C").length; // 判断条件1:恰好4个A const condition1 = countA === 4; // 判断条件2:3个B且2个C const condition2 = countB === 3 && countC === 2; console.log(condition1); // 输出 true console.log(condition2); // 输出 true
方法二:使用reduce()统计元素数量
reduce()可以遍历数组并累计计数,适合需要统计多种元素的场景,只需遍历一次数组,性能更优:
const countMap = array.reduce((acc, current) => { // 累计当前元素的数量,不存在则初始化为1 acc[current] = (acc[current] || 0) + 1; return acc; }, {}); // 初始值为空对象,用于存储元素-数量映射 // 判断条件 const condition1 = countMap.A === 4; const condition2 = countMap.B === 3 && countMap.C === 2; console.log(condition1); // 输出 true console.log(condition2); // 输出 true
说明
两种方法都能精准统计数组中指定元素的出现次数,替代只能判断存在性的includes()。如果仅需统计单个元素,filter()写法更简洁;如果需要统计多个元素,reduce()的性能表现更好。
内容的提问来源于stack exchange,提问作者baby
相关产品推荐
相关产品推荐

