如何将对象数组中的对象合并为单个对象?
解决方案
这里有几种简洁优雅的方式实现你需要的对象合并:
方法1:使用Object.assign()
Object.assign()可接收多个对象参数,将它们的属性合并到目标对象中,直接展开数组即可完成合并:
const arr = [{"All": "all"}, {"Success": "successCompleted"}, {"Refund": "refunded"}, {"Error": "error"}]; const mergedObj = Object.assign({}, ...arr); console.log(mergedObj); // 输出:{All: "all", Success: "successCompleted", Refund: "refunded", Error: "error"}
方法2:使用扩展运算符(...)
扩展运算符是更简洁的语法糖,同样能快速合并多个对象:
const arr = [{"All": "all"}, {"Success": "successCompleted"}, {"Refund": "refunded"}, {"Error": "error"}]; // 数组长度固定时的写法 const mergedObj = {...arr[0], ...arr[1], ...arr[2], ...arr[3]}; // 数组长度不固定时的通用写法 const mergedObj = arr.reduce((acc, curr) => ({...acc, ...curr}), {});
方法3:使用Array.prototype.reduce()
reduce方法遍历数组,逐步将对象合并到累加器中,适合需要自定义合并逻辑的场景:
const arr = [{"All": "all"}, {"Success": "successCompleted"}, {"Refund": "refunded"}, {"Error": "error"}]; const mergedObj = arr.reduce((result, current) => { return {...result, ...current}; }, {}); console.log(mergedObj);
注意:若数组中存在键名重复的对象,后面的对象属性会覆盖前面的属性值,这是JavaScript对象合并的默认行为。
内容的提问来源于stack exchange,提问作者John Red
相关产品推荐
相关产品推荐

