在 lodash 中添加对象的新属性

Add new properties of object in lodash

我有两个对象,我想将对象 A 的属性添加到对象 B,我尝试使用 extend,但它不起作用,我需要使用不同的东西吗?

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

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

我希望 A 包含两者

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

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

_.assign(a, b);

实例:

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>

尽管从 ES2015 开始,您不需要 Lodash,您可以使用原生 Object.assign:

实例:

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>

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

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

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

通过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>