Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
33
rated 0 times [  35] [ 2]  / answers: 1 / hits: 112691  / 10 Years ago, thu, december 18, 2014, 12:00:00
var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}];


how can i merge this into one obj?



//mergedObj = {a:1, b:2, c:3, d:4, e:5, f:6}

More From » arrays

 Answers
9

If your environment supports Object.assign, then you can do the same in a succinct way like this





const arrObj = [{a: 1, b: 2}, {c: 3, d: 4}, {e: 5, f: 6}];

console.log(arrObj.reduce(function(result, current) {
return Object.assign(result, current);
}, {}));

// If you prefer arrow functions, you can make it a one-liner ;-)
console.log(arrObj.reduce(((r, c) => Object.assign(r, c)), {}));

// Thanks Spen from the comments. You can use the spread operator with assign
console.log(Object.assign({}, ...arrObj));








ES5 solution:



You can use Array.prototype.reduce like this



var resultObject = arrObj.reduce(function(result, currentObject) {
for(var key in currentObject) {
if (currentObject.hasOwnProperty(key)) {
result[key] = currentObject[key];
}
}
return result;
}, {});

console.log(resultObject);
# { a: 1, b: 2, c: 3, d: 4, e: 5, f: 6 }


This solution, simply gathers all the keys and their values in every object in the result, which is finally returned to us as the result.



This check



if (currentObject.hasOwnProperty(key)) {


is necessary to make sure that we are not including all the inherited enumerable properties in the result.


[#68454] Monday, December 15, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
susanajamiep

Total Points: 466
Total Questions: 113
Total Answers: 108

Location: Liberia
Member since Fri, Oct 22, 2021
3 Years ago
;