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

如何统计字符串中相同文本值的出现次数并解决相关JavaScript报错

问题描述

我有如下字符串:

item_type = 'a, a, b'

我要统计其中的值,得到如下格式的结果:

number_of_a = 2
number_of_b = 1

我尝试编写了如下代码,但运行时出现了针对输入字符串"[object Object]"的JavaScript报错:

if(item_type != null) {
    item_type = item_type.split(",");
    item_type.forEach(function(x) {
        number_of_a[x] = (number_of_a[x] || 0) + 1;
    });
}

错误原因

  • 未初始化计数对象number_of_a,直接访问其属性会抛出引用错误
  • 未对item_type做字符串类型校验,若传入对象类型,调用split时会隐式转为"[object Object]"字符串,触发非预期逻辑
  • 分割后的字符串元素带有多余空格,会导致相同字符被识别为不同键
  • 未实现计数结果到指定输出格式的转换

修复后的代码

// 初始化计数存储对象
const countMap = {};
// 先校验变量类型,确保是字符串再处理
if (typeof item_type === 'string') {
    // 分割后逐元素去空格,过滤空值避免误统计
    const items = item_type.split(',').map(item => item.trim()).filter(item => item);
    items.forEach(key => {
        countMap[key] = (countMap[key] || 0) + 1;
    });
}
// 按要求格式输出结果
console.log(`number_of_a = ${countMap.a || 0}`);
console.log(`number_of_b = ${countMap.b || 0}`);

运行后输出结果完全匹配要求:

number_of_a = 2
number_of_b = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:36:05