You need to enable JavaScript to run this app. JavaScript如何将键值对对象数组转换为单个键值对对象
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何将键值对对象数组转换为单个键值对对象

JavaScript实现数组合并为单键值对对象方案

你可以通过以下几种方式实现需求,适配不同的运行环境和使用场景:

1. ES6+ 最简写法

直接使用Object.assign配合数组展开运算符实现,代码最简洁,适配所有现代浏览器和Node.js环境:

// 原数据
const originData = {
  relations: [
    {"609e598ad32e90519043f09f": "609d8b78cf7bb100045fc593"},
    {"609e5945d32e90519043f09e": "609d8b78cf7bb100045fc593"},
    {"609e58b496d43235884e788f": "609d8b78cf7bb100045fc593"},
    {"609e57e3e1560e58245544f4": "609d8de9575b49000466e358"}
  ]
};

// 合并处理
originData.relations = Object.assign({}, ...originData.relations);

如果数组中存在重复键,后出现的对象值会覆盖先出现的,符合常规业务逻辑。

2. reduce写法

适合需要额外自定义合并逻辑的场景,兼容性和扩展性更强:

// 支持展开运算符的写法
originData.relations = originData.relations.reduce((acc, cur) => ({...acc, ...cur}), {});

// 兼容不支持展开运算符的ES6环境写法
originData.relations = originData.relations.reduce((acc, cur) => Object.assign(acc, cur), {});

3. 旧环境兼容写法

如果需要兼容IE等不支持ES6的老旧运行环境,可以用循环遍历实现:

var merged = {};
for (var i = 0; i < originData.relations.length; i++) {
  var current = originData.relations[i];
  for (var key in current) {
    if (current.hasOwnProperty(key)) {
      merged[key] = current[key];
    }
  }
}
originData.relations = merged;

内容的提问来源于stack exchange,提问作者Jordi A18 GN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:06:04