Merging objects (associative arrays)

combine arrays of objects
javascript + merge array of objects
vue merge objects
merge multiple array of objects javascript
javascript merge array of objects by key
merge object into array of objects
merge objects javascript
merge array of objects into one object

What’s the best/standard way of merging two associative arrays in JavaScript? Does everyone just do it by rolling their own for loop?

with jquery you can call $.extend

var obj1 = {a: 1, b: 2};
var obj2 = {a: 4, c: 110};

var obj3 = $.extend(obj1, obj2); 

obj1 == obj3 == {a: 4, b: 2, c: 110} // Pseudo JS

(assoc. arrays are objects in js)

look here: http://api.jquery.com/jQuery.extend/


edit: Like rymo suggested, it's better to do it this way:

obj3 = $.extend({}, obj1, obj2); 
obj3 == {a: 4, b: 2, c: 110}

As here obj1 (and obj2) remain unchanged.


edit2: In 2018 the way to do it is via Object.assign:

var obj3 = Object.assign({}, obj1, obj2); 
obj3 === {a: 4, b: 2, c: 110} // Pseudo JS

If working with ES6 this can be achieved with the Spread Operator:

const obj3 = { ...obj1, ...obj2 };

Associative array/Merging, After processing each array, i add the obtained row (converted to object if this option is passed) to returning array. The function: /* Groups passed arrays in an array  Merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array. If the input arrays have the same string keys, then the later value for that key will overwrite the previous one.

Now in 2016 I would say the best/standard way is Object.assign() Pure Javascript. No jQuery is needed.

obj1 = {a: 1, b: 2};
obj2 = {a: 4, c: 110};
obj3 = Object.assign({},obj1, obj2);  // Object {a: 4, b: 2, c: 110}

More information, examples and polyfill here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

Function to combine arrays of associative arrays, Merge two none associative arrays into associative array with objects holding old and new value. Help Request. Hey guys, how do I merge two arrays into an  Associative arrays are used to store key value pairs. For example, to store the marks of different subject of a student in an array, a numerically indexed array would not be the best choice. Instead, we could use the respective subject’s names as the keys in our associative array, and the value would be their respective marks gained.

This is how Prototype does it:

Object.extend = function(destination, source) {
    for (var property in source) {
        if (source.hasOwnProperty(property)) {
            destination[property] = source[property];
        }
    }
    return destination;
};

called as, for example:

var arr1 = { robert: "bobby", john: "jack" };
var arr2 = { elizabeth: "liz", jennifer: "jen" };

var shortnames = Object.extend(arr1,arr2);

EDIT: added hasOwnProperty() check as correctly pointed out by bucabay in comments

array_merge - Manual, Get code examples like "php array merge for associative arrays" instantly Merge two array of objects by keys laravel · php create associative  Associative arrays. So we have to use one of JavaScript's minor mysteries. In JavaScript, objects are also associative arrays (or hashes). That is, the property. theStatus.Home can also be read or written by calling. theStatus['Home'] Thus, you can access each property by entering the name of the property as a string into this array.

Keep it simple...

function mergeArray(array1,array2) {
  for(item in array1) {
    array2[item] = array1[item];
  }
  return array2;
}

Merge two none associative arrays into associative array with , An associative array is an array with string keys rather than numeric keys. Arrays are objects in JavaScript, a specialized type of object with a length property and methods that are The join method ignores the element with the string index. Note: If two or more array elements have the same key, the last one overrides the others. Note: If you assign only one array to the array_merge() function, and the keys are integers, the function returns a new array with integer keys starting at 0 and increases by 1 for each value (See example below).

Underscore also has an extend method:

Copy all of the properties in the source objects over to the destination object. It's in-order, so the last source will override properties of the same name in previous arguments.

_.extend(destination, *sources) 

_.extend({name : 'moe'}, {age : 50});
=> {name : 'moe', age : 50}

php array merge for associative arrays Code Example, Associative Arrays in PHP · Sorting Arrays in PHP 5 · PHP | Check if two arrays contain same elements · PHP | Find Intersection of two arrays · Compute the set  Associative Arrays [v1.1.21+] An associative array is an object which contains a collection of unique keys and a collection of values, where each key is associated with one value. Keys can be strings, integers or objects, while values can be of any type. An associative array can be created as follows:

Associative Arrays in JavaScript, Here are some more FAQ related to this topic: How to compare two array values in PHP · How to get all the values from an associative array in PHP · How to check  But if you might be dealing with the possibility with a non-array, then use concat to merge an array 👍 Anyways I just want to point that out, so you can use the most appropriate method depending on the problem you're trying to solve 👍 # Merge Array with Push 🤔 Some of you are asking, hey, can't I also use push to merge an array. And

PHP, The second array-like object to merge into the first, unaltered. The $.merge() operation forms an array that contains all elements from the two arrays. The orders  We can transform an associative array, ie an object, into a simple array. With the method that returns the list of keys, and the map method (ECMAScript 1.6), we also obtain the values: var a3 = Object.keys (a2).map (function (k) { return a2 [k];}) document.write (a3)

How to Merge Two or More Arrays into One Array in PHP, Associative Arrays The associative arrays are very similar to numeric arrays in term of functionality but they are different in terms of their index. Associative array will have their index as string so that you can establish a strong association between key and values.

Comments
  • there are no associative arrays in javascript btw, only objects.
  • Crossref same question in Perl: stackoverflow.com/questions/350018/…
  • Associative arrays in javascript: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • or to avoid mucking obj1, use an empty object as target: $.extend({}, obj1, obj2)
  • Yes, when dealing with closures and objects passed by reference, take rymo's advice to avoid affecting the original object for subsequent operations.
  • For modern browsers, check the solution by @manfred using Object.assign(), which doesn't rely on JQuery if you're not using the library already.
  • It works, but it alters the first parameter and that's something you need to be aware of. See developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • What is the type for obj3? what if obj1 is type IABC, will obj3 keep that type afterwards?
  • You'll need the test source.hasOwnProperty(property) to make sure you only copy the immediate properties over. As it is, this could will copy all properties including those derived from Object.prototype
  • You to check hasOwnProperty to avoid copying any properties on the arrau1.prototype
  • @LeeGee is right. You need that hasOwnProperty check. Referring to the objects as arrays is also misleading (they're objects), the arg names should convey that array2 is mutated or a new object should be returned. I would edit the answer but in effect it would become almost exactly Jonathan Fingland's edited answer which has already been corrected.
  • Objects in Javascript are implemented as associative arrays, so there certainly is the notion of same
  • I tried using this with Node JS, but Object.getOwnPropertyNames is not a function will crash the app.
  • I'm using this with some oldish v8 engine within plv8 PostgreSQL extension. And it works in browsers. Just find a way in your JS engine to do the equivalent thing as "hasOwnProperty". Then you can reuse this logic.