There are some good suggestions here.
I know this is a really old question, but for future visitors looking for a slightly more flexible solution, I have a similar function that I wrote that accepts any number of objects in an array and merges them all together and returns a single object with the properties of all of the object literals in the array.
Note: the order of precedence is determined by the array. Each subsequent object will overwrite identical properties if they exist in previous objects. Otherwise, new properties are simply added to the single object that is returned.
I hope this will help future visitors to this question. Here's the function, very short and sweet:
var mergeObjects = function (objectsArray) { var result = {}; for (var i = 0; i < objectsArray.length; i++) { for (var obj in objectsArray[i]) { if (objectsArray[i].hasOwnProperty(obj)) { result[obj] = objectsArray[i][obj]; }; }; }; return result; };
You can use it like this:
// Define the mergeObjects function var mergeObjects = function (objectsArray) { var result = {}; for (var i = 0; i < objectsArray.length; i++) { for (var obj in objectsArray[i]) { if (objectsArray[i].hasOwnProperty(obj)) { result[obj] = objectsArray[i][obj]; }; }; }; return result; }; // Define some objects to merge, keeping one property consistent so you can // see it overwrite the old ones var obj1 = { test1: "test", overwrite: "overwrite1" }; var obj2 = { test2: "test2", overwrite: "overwrite2" }; var obj3 = { test3: "test3", overwrite: "overwrite3" }; // Merge the objects var newObject = mergeObjects([obj1, obj2, obj3]); // Test the output for (var obj in newObject){ if (newObject.hasOwnProperty(obj)){ document.body.innerHTML += newObject[obj] + "<br />"; } }
someFunctionknow whicheatto keep, and which to discard?