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
相关产品推荐
相关产品推荐

