如何统计字符串中相同文本值的出现次数并解决相关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
相关产品推荐
相关产品推荐

