在lodash中添加对象的新属性

问题描述 投票:12回答:3

我有两个对象,我想添加从对象A到对象B的属性,我尝试使用不起作用的扩展,我是否需要使用不同的东西?

a = {
name = "value"
name2 = "value2"
}

b = {
name3 = "value"
name4 = "value2"
}

我希望A包含两者

a = {
name = "value"
name2 = "value2"
name3 = "value"
name4 = "value2"
}
javascript underscore.js lodash
3个回答
27
投票

_.extend(现在称为_.assign)确实是这样做的:

_.assign(a, b);

实例:

var a = {
name: "value",
name2: "value2"
};

var b = {
name3: "value",
name4: "value2"
};

_.assign(a, b);
document.body.insertAdjacentHTML(
  "beforeend",
  "Result:<pre>" + JSON.stringify(a, null, 2) + "</pre>"
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script>

6
投票

首先,您定义的对象不正确。对象必须写成name:value对,用冒号(而不是等号)分隔。此外,您必须使用逗号分隔符来分隔对象的属性,例如:

var person = {
    firstName: "Matthias",
    lastName: "Eckhart",
    eyeColor: "blue"
};

要通过lodash扩展具有各种属性的对象,您可以使用_.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>

3
投票

我相信你想使用lodash merge函数,而不是extend。见:Lodash - difference between .extend() / .assign() and .merge()

© www.soinside.com 2019 - 2024. All rights reserved.