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

React环境下如何实现数组去重并为元素添加count统计属性

数组去重并统计重复次数实现方案

核心思路是使用Map结构做临时缓存,只需遍历1次原数组即可完成处理,无需提前硬编码所有可能的id,时间复杂度为O(n),适合各类数据量的场景。

代码实现

// 原数组(已修正为标准JS对象格式,原示例中的=为输入笔误)
const originArr = [
  {id: 1, product: "Book"},
  {id: 1, product: "Book"},
  {id: 1, product: "Book"},
  {id: 2, product: "Chair"}
];

const processArr = (arr) => {
  const tempMap = new Map();
  arr.forEach(item => {
    if (tempMap.has(item.id)) {
      // id已存在,count加1
      tempMap.get(item.id).count += 1;
    } else {
      // id不存在,新增带count的对象存入Map
      tempMap.set(item.id, {...item, count: 1});
    }
  })
  // 将Map的value转为数组返回
  return Array.from(tempMap.values());
}

// 调用方法得到结果
const result = processArr(originArr);
console.log(result);
// 输出:[{id: 1, product: "Book", count: 3}, {id: 2, product: "Chair", count: 1}]

方案说明

  • 完全不需要提前枚举所有可能的id值,会自动根据原数组中出现的id做统计
  • 使用展开运算符...item可以完整保留原对象的所有属性,不需要手动拼接每个字段,后续如果对象新增其他属性也无需修改逻辑
  • 如果你的场景要求判断重复的依据不是id,只需要修改tempMap.has()的判断key即可,扩展性更高
  • 该方法可以直接在React组件的任意数据处理环节调用,比如接口请求成功后处理返回值、渲染列表前预处理数据等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:45:01