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

JS中按共有属性gwdetailsid合并重组对象数组的高效实现方法

JS对象数组合并最优方案

针对按gwdetailsid合并对象、提取gwpname/gwpvalue为键值对的需求,最优实现的时间复杂度为O(n),仅需单轮遍历即可完成,适合任意规模的数组处理:

实现代码

// 原始输入数据
const input = {
  "data": [
    {
      "gwdetailsid": "gw1",
      "gwpname": "username",
      "gwpvalue": "transalis"
    },
    {
      "gwdetailsid": "gw1",
      "gwpname": "password",
      "gwpvalue": "secure_password@1"
    },
    {
      "gwdetailsid": "gw2",
      "gwpname": "username",
      "gwpvalue": "tesco"
    },
    {
      "gwdetailsid": "gw2",
      "gwpname": "password",
      "gwpvalue": "lemon_farmer_2"
    }
  ]
}

// 临时映射表存储分组数据
const idMap = {}
input.data.forEach(item => {
  // 不存在对应分组时初始化
  if (!idMap[item.gwdetailsid]) {
    idMap[item.gwdetailsid] = { gwdetailsid: item.gwdetailsid }
  }
  // 追加属性键值对
  idMap[item.gwdetailsid][item.gwpname] = item.gwpvalue
})

// 生成最终输出结构
const output = {
  gateways: Object.values(idMap)
}

逻辑说明

  • 用哈希表做临时存储,避免了双重循环的冗余匹配,性能远高于O(n²)的过滤去重方案
  • 遍历过程中直接完成属性赋值,无需额外处理中间结构
  • 最终通过Object.values()直接将映射表转为目标数组,得到的结果完全匹配需求的输出结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:15:03