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

如何统计数组中字符串的字符出现次数?

如何正确统计数组中字符串的字符出现次数?

原代码的问题分析

你的代码逻辑存在几个核心问题,导致输出不符合预期:

  • 匹配逻辑错误:你拿字符串的第i位字符和字母表的第i位字符对比,完全偏离统计需求——比如"academy"中第二个a在索引5的位置,此时字母表第5位是f,根本无法匹配,自然统计不到重复的a。
  • 计数逻辑错误:每次匹配到字符就输出然后把count重置为0,无法累计同一个字符的出现次数。
  • 字母表拼写错误:定义的alph少了字母w,会导致后续字母无法匹配。
  • 函数无返回值:最后console.log(sumChar(...))输出undefined是因为函数没有返回任何内容。

正确实现方案

下面提供两种简洁可靠的实现方式,都能满足你的需求:

方法一:使用普通对象统计

function sumChar(arr) {
    // 初始化空对象存储字符计数
    const charCount = {};
    // 遍历数组中的每个字符串
    for (const str of arr) {
        // 遍历当前字符串的每个字符
        for (const char of str) {
            // 累计字符出现次数:存在则+1,不存在则初始化为1
            charCount[char] = (charCount[char] || 0) + 1;
        }
    }
    // 按字符顺序输出结果(不需要排序可直接遍历对象)
    Object.keys(charCount).sort().forEach(char => {
        console.log(`${char}:${charCount[char]}`);
    });
}

sumChar(["academy"]);

方法二:使用Map统计(更适合有序场景)

function sumChar(arr) {
    const charCount = new Map();
    for (const str of arr) {
        for (const char of str) {
            // Map内置方法判断字符是否存在,累计计数
            charCount.set(char, (charCount.get(char) || 0) + 1);
        }
    }
    // 按字符排序后输出
    Array.from(charCount.keys()).sort().forEach(char => {
        console.log(`${char}:${charCount.get(char)}`);
    });
}

sumChar(["academy"]);

输出结果

运行上述代码后,会得到你期望的输出:

a:2
c:1
d:1
e:1
m:1
y:1

内容的提问来源于stack exchange,提问作者Abdulloh Mominov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:50:45