【问题标题】:Add new properties of object in lodash在 lodash 中添加对象的新属性
【发布时间】:2023-03-03 18:08:01
【问题描述】:

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

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

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

我希望 A 包含两个

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

【问题讨论】:

    标签: javascript underscore.js lodash


    【解决方案1】:

    _.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>"
    );
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"&gt;&lt;/script&gt;

    【讨论】:

    • 谢谢,我试了一下,但在调用分配后,我看到对象 A 中的属性,但值不明确,为什么?
    【解决方案2】:

    首先,您定义的对象不正确。对象必须写成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);
    &lt;script src="https://raw.githubusercontent.com/lodash/lodash/3.10.1/lodash.min.js"&gt;&lt;/script&gt;

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 谢谢,但是当我使用合并'undefined'中的新属性的值时,为什么?
      • 查看@t-j-crowder 的回答,似乎工作正常。
      猜你喜欢
      • 2018-12-05
      • 2021-10-03
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多