Computer >> Computer tutorials >  >> Programming >> Javascript

Difference between .extend() / .assign() and .merge() in Lodash library.


assign/extend take each property in the source, copy its value as-is to destination. If property values themselves are objects, there is no recursive traversal of their properties. This is also called shallow copying/cloning. The entire object would be taken from the source and set into a destination.

Merge takes each property in the source, checks if that property is the object itself. If it then goes down recursively and tries to map child object properties from source to destination.

Example

let _ = require('lodash');
let destination = {
   a: {
      b: 1,
      c: 2
   },
};
let source = {
   a: {
      d: 2,
      c: 3
   },
};
console.log(_.merge(destination, source));
console.log(_.extend(destination, source));

Output

This will give the output −

{ a: { b: 1, c: 3, d: 2 } }
{ a: { d: 2, c: 3 } }