JavaScript统计数组字符串出现次数并生成指定格式结果
核心串提取与计数功能实现
实现逻辑
- 基于现有核心串提取逻辑,新增计数器存储结构,无需额外多轮遍历
- 使用普通对象作为计数器,读取性能优于复杂Map结构
- 最终遍历计数器生成符合格式要求的结果数组,保留原数组中核心串的首次出现顺序
完整可运行代码
var folders = ["a-x-y_1", "b+x+y_1", "b+x+y_3", "b+x+y_2", "c_x_y_1", "c_x_y_2", "d_x_y_1"]; const countMap = {}; folders.forEach(function (item) { var index = item.lastIndexOf("_"); const coreStr = item.substring(0, index); // 累计核心串出现次数 countMap[coreStr] = (countMap[coreStr] || 0) + 1; }); // 生成目标格式结果数组 const finalResult = Object.entries(countMap).map(function(item) { return item[0] + "~" + item[1]; }); console.log(finalResult);
输出验证
代码执行后,finalResult的输出值为:
["a-x-y~1", "b+x+y~3", "c_x_y~2", "d_x_y~1"]
完全匹配预期格式要求。
低版本环境兼容写法
如果运行环境不支持Object.entries等ES6语法,可以替换结果生成部分为兼容实现:
const finalResult = []; for (let coreStr in countMap) { // 过滤对象原型链上的继承属性 if (countMap.hasOwnProperty(coreStr)) { finalResult.push(coreStr + "~" + countMap[coreStr]); } }
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

