You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字符串数组中统计Mr与Miss出现次数:求和实现求助

解决数组中Mr/Miss总出现次数统计问题

我懂你的困扰啦——你现在的代码确实会逐个输出每个字符串里Miss的数量,但没法得到整个数组里所有Mr和Miss的总次数。咱们只需要调整一下逻辑,把每次的统计结果累加起来就行,下面给你两种可行的方案:

方案一:用forEach累加计数

这种方式比较直观,适合刚开始接触数组遍历的场景:

const array = [ "Hello Mr, Hello Miss", "Hello Mr, Hello Miss", "Hello Mr, Hello Miss", "Hello Mr, Hello Miss" ];

// 先初始化两个总计数器,初始值为0
let totalMr = 0;
let totalMiss = 0;

array.forEach(str => {
  // 统计当前字符串里的Mr数量,没有匹配的话就返回空数组,长度为0
  const mrCount = (str.match(/Mr/g) || []).length;
  // 同理统计Miss的数量
  const missCount = (str.match(/Miss/g) || []).length;
  
  // 把当前字符串的统计数累加到总计数器里
  totalMr += mrCount;
  totalMiss += missCount;
});

// 最后统一打印总次数
console.log("总Mr次数:", totalMr); // 会输出4
console.log("总Miss次数:", totalMiss); // 会输出4

方案二:用reduce简化代码

如果你想更简洁一点,可以用数组的reduce方法,它天生就是用来做累加计算的:

const array = [ "Hello Mr, Hello Miss", "Hello Mr, Hello Miss", "Hello Mr, Hello Miss", "Hello Mr, Hello Miss" ];

// 一行搞定Mr的总次数
const totalMr = array.reduce((sum, str) => sum + (str.match(/Mr/g) || []).length, 0);
// 同理搞定Miss的总次数
const totalMiss = array.reduce((sum, str) => sum + (str.match(/Miss/g) || []).length, 0);

console.log("总Mr次数:", totalMr);
console.log("总Miss次数:", totalMiss);

为什么之前的代码不行?

你之前的代码在forEach里直接打印了每个元素的count,相当于每次循环都输出当前字符串的统计结果,没有把这些数值累加起来。现在我们通过定义外部的计数器变量,每次循环把当前的统计数加进去,最后就能得到整个数组的总次数啦。

内容的提问来源于stack exchange,提问作者Anna Almestal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:32:45