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

JS按id分组处理数据时如何为每个分组对象添加关联url数组长度属性

实现按id分组并同步统计关联url数量

你当前的分组逻辑已经完成了url按id归集的核心能力,要在遍历流程中直接加入长度统计,只需要调整每个id对应的初始化存储结构,在新增url时同步更新计数即可。

注意:如果直接给数组添加自定义长度属性,执行JSON.stringify写入文件时自定义属性会丢失,因此需要把每个id对应的存储值调整为普通对象,同时存放url列表和长度计数。

整合到原有forEach流程的实现代码

const output = {}
sites.forEach(obj=>{
    const ids = obj.ids
    if(ids && ids.length>0){
        ids.forEach(id=>{
            if(!output[id]){
                // 初始化分组结构:包含url列表、关联url计数两个字段
                output[id] = {
                    urlList: [],
                    relatedUrlCount: 0
                }
            }
            output[id].urlList.push(obj.url);
            // 每新增一个关联url,计数同步+1
            output[id].relatedUrlCount += 1;
        });
    }
});

fs.writeFileSync('cleanedData.json', JSON.stringify(output, null, 2));

这种写法没有额外遍历开销,计数和url列表的新增完全同步,不会出现计数和实际列表长度不匹配的问题。

最终输出结构示例

执行后写入JSON文件的结构如下:

{
  "F20": {
    "urlList": [
      "www.site.com",
      "www.site.com/something",
      "www.site.com/somethingelse"
    ],
    "relatedUrlCount": 3
  },
  "C10": {
    "urlList": [
      "www.site.com",
      "www.site.com/something"
    ],
    "relatedUrlCount": 2
  },
  "C12": {
    "urlList": [
      "www.site.com/somethingelse"
    ],
    "relatedUrlCount": 1
  },
  "C05": {
    "urlList": [
      "www.site.com",
      "www.site.com/something",
      "www.site.com/somethingelse"
    ],
    "relatedUrlCount": 3
  }
}

可选简化写法

如果不想在归集过程中维护计数,也可以在所有url归集完成后,统一遍历一次分组对象补充长度字段,代码逻辑更直观,数据量较小时性能差异可以忽略:

const output = {}
sites.forEach(obj=>{
    const ids = obj.ids
    if(ids && ids.length>0){
        ids.forEach(id=>{
            if(!output[id]){
                output[id] = {
                    urlList: []
                }
            }
            output[id].urlList.push(obj.url);
        });
    }
});

// 归集完成后统一计算每个分组的url数量
Object.values(output).forEach(group => {
    group.relatedUrlCount = group.urlList.length
})

fs.writeFileSync('cleanedData.json', JSON.stringify(output, null, 2));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:01:06