如何用JavaScript统计字符串中字符出现次数,现有for循环代码如何修正?
代码修复与功能实现
原有代码问题
- 未声明函数名,需求要求函数名为
amount - 匹配逻辑错误:第二个入参是单个待匹配字符,无需加
[i]索引,直接比对即可 - 缺少返回值,统计完成后需返回计数结果
- 调用时传入的字符串和字符需要加引号,否则会被识别为未定义变量
功能1:统计指定字符在字符串中的出现次数
修复后的for循环实现
function amount(str, targetChar) { let count = 0 for (let i = 0; i < str.length; i++) { if (str[i] === targetChar) { count++ } } return count } // 测试调用 console.log(amount('door', 'o')) // 输出 2
以上实现默认区分大小写,如果需要不区分大小写匹配,可在比对前统一转为大写/小写,比如
str[i].toLowerCase() === targetChar.toLowerCase()
简洁实现(非for循环)
const amount = (str, targetChar) => str.split(targetChar).length - 1
功能2:查询字符串中每个字母的出现数量
function countEveryChar(str) { const charMap = {} for (let i = 0; i < str.length; i++) { const currentChar = str[i] charMap[currentChar] = charMap[currentChar] ? charMap[currentChar] + 1 : 1 } return charMap } // 测试调用 console.log(countEveryChar('door')) // 输出 { d: 1, o: 2, r: 1 }
内容的提问来源于stack exchange,提问作者poolgirtre
相关产品推荐
相关产品推荐

