如何将包含多个对象的array数组合并为单个object对象
实现方案
以下给出JavaScript环境下的多种实现方式:
方法1:ES6 一行极简实现
直接用Object.assign配合数组扩展运算符即可完成合并:
const array1 = [ {1:'Eat'}, {2:'Shower'}, {3:'Shave'} ]; const object1 = Object.assign({}, ...array1);
方法2:reduce 通用实现
用数组的reduce方法处理,兼容性和可读性更好:
const object1 = array1.reduce((total, current) => { return Object.assign(total, current) }, {})
也可以用对象扩展运算符简化写法:
const object1 = array1.reduce((total, current) => ({...total, ...current}), {})
方法3:基础循环实现
如果需要兼容ES5及更低版本环境,可以用普通for循环遍历:
var object1 = {}; for (var i = 0; i < array1.length; i++) { var item = array1[i]; for (var k in item) { if (item.hasOwnProperty(k)) { object1[k] = item[k]; } } }
- 补充注意:你示例中的
Eat、Shower等值如果是字符串类型,实际代码中需要包裹引号,否则会触发变量未定义的语法错误。
内容的提问来源于stack exchange,提问作者OjayChima
相关产品推荐
相关产品推荐

