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

JavaScript如何统计对象数组value键值出现次数并追加计数后缀

问题说明

需要统计对象数组中value字段值的出现频次,对重复出现的同值项,从第二次出现开始追加(计数)后缀,计数从1开始递增。

测试源数据

var a = [
    { id: 1, value: "10000"},
    { id: 2, value: "20000"},
    { id: 3, value: "30000"},
    { id: 4, value: "10000"},
    { id: 5, value: "20000"},
    { id: 6, value: "40000"},
    { id: 7, value: "10000"},
    { id: 8, value: "70000"}
]

实现代码

通过哈希表记录每个value的出现次数,遍历数组时按规则生成新值,全程不修改原数组原始数据:

// 存储各value的重复出现计数
const valueCount = {};
const result = a.map(item => {
  // 浅拷贝当前对象,避免污染原数组
  const current = { ...item };
  const val = current.value;

  if (!(val in valueCount)) {
    // 首次出现,初始化计数为0,保留原始值
    valueCount[val] = 0;
  } else {
    // 非首次出现,计数累加后拼接后缀
    valueCount[val]++;
    current.value = `${val} (${valueCount[val]})`;
  }

  return current;
});

结果说明

运行后输出完全符合计数规则:

  • 仅出现1次的30000、40000、70000全程保留原始值
  • 累计出现3次的10000:首次出现保留原值,第二次为10000 (1),第三次为10000 (2)
  • 累计出现2次的20000:首次出现保留原值,第二次为20000 (1)

注:提问中给出的期望结果里id=8项写为10000 (3)属于笔误,该项原始value为70000且仅出现1次,最终值应为70000。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:48:16