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

