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

JavaScript中如何为对象数组按分组生成排名/索引

JavaScript按category分组生成组内递增ID实现方案

实现思路

通过一个计数器对象记录每个分类当前的ID序号,单次遍历数组即可完成赋值,无需额外分组再合并,时间复杂度为O(n),性能优异。

完整代码实现

// 原始对象数组
const originArr = [
  { "country": "A", "category": "A" },
  { "country": "B", "category": "A" },
  { "country": "B", "category": "B" },
  { "country": "B", "category": "B" },
  { "country": "B", "category": "B" }
];

// 存储每个分类的当前计数
const counter = {};
// 遍历生成结果数组
const result = originArr.map(item => {
  // 分类首次出现时初始化计数
  if (!counter[item.category]) counter[item.category] = 0;
  // 计数递增
  counter[item.category]++;
  // 返回新对象(避免修改原数组,允许修改原数组可直接赋值item.id)
  return { ...item, id: counter[item.category] };
});

console.log(result);

运行上述代码得到的result就是符合需求的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:39:03