Reputation: 2887
I've two objects and I want to add properties from object A to object B and I try with extend which doesn't work,do I need to use something different ?
a = {
name = "value"
name2 = "value2"
}
b = {
name3 = "value"
name4 = "value2"
}
I want that A will contain both
a = {
name = "value"
name2 = "value2"
name3 = "value"
name4 = "value2"
}
Upvotes: 21
Views: 63925
Reputation: 1074989
_.extend
(now called _.assign
) is indeed how you do this:
_.assign(a, b);
Live Example:
const a = {
name: "value",
name2: "value2",
};
const b = {
name3: "value",
name4: "value2",
};
_.assign(a, b);
console.log(JSON.stringify(a, null, 2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script>
Though as of ES2015, you don't need Lodash for it, you can use the native Object.assign
:
Live Example:
const a = {
name: "value",
name2: "value2",
};
const b = {
name3: "value",
name4: "value2",
};
Object.assign(a, b);
console.log(JSON.stringify(a, null, 2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script>
Upvotes: 43
Reputation: 5156
First of all, your defined objects are incorrect. Objects must be written as name:value
pairs, separated by a colon (and not by an equality sign). Furthermore, you must use comma separators to delimit the properties of the object, like:
var person = {
firstName: "Matthias",
lastName: "Eckhart",
eyeColor: "blue"
};
To extend an object with various properties via lodash, you can use _.assign(object, [sources], [customizer], [thisArg])
:
var a = {
name: "value",
name2: "value2"
};
var b = {
name3: "value",
name4: "value2"
};
_.assign(a, b); // extend
console.log(a);
<script src="https://raw.githubusercontent.com/lodash/lodash/3.10.1/lodash.min.js"></script>
Upvotes: 7
Reputation: 126
I believe you want to use the lodash merge
function, rather than extend
. See: Lodash - difference between .extend() / .assign() and .merge()
Upvotes: 3