【问题标题】:What is the best way to partially copy a JS object? [duplicate]部分复制 JS 对象的最佳方法是什么? [复制]
【发布时间】:2020-07-31 05:37:26
【问题描述】:

我正在开发一个 NodeJS 项目(使用 @babel/preset-env)并且需要弄清楚:

如果我有两个对象,其中一个与另一个相同,但可能减去一些字段(取决于输入对象),我如何编辑“较大”的对象,使其字段更改为匹配字段的值来自较小的物体?

这可能措辞不好,所以这里有一个例子……假设我有这两个对象:

const obj1 = {
    a: 1,
    b: 2,
    c: 3,
    d: 4
}

const obj2 {
    b: 'hello',
    d: 'world'
}

我想要做的是在这种情况下修改obj1,以便obj1.bobj1.d 的值使用obj2 中的值进行更新。

有没有办法直接编辑值,或者我应该只创建一个obj1 的副本并根据它们是否存在于obj2 中设置值?

【问题讨论】:

    标签: javascript node.js ecmascript-2016


    【解决方案1】:

    试试这个。您可以使用扩展运算符。

    obj1 = {...obj1, ...obj2}
    

    【讨论】:

    • 这正是我所需要的,我忘记了传播运算符甚至存在,我很少使用它们!非常感谢您这么快的回复!
    【解决方案2】:

    如果您只想将属性从 obj2 复制到 obj1 就地(不创建新对象并替换 obj1 上已经存在的任何匹配属性),您可以这样做:

    for (const [key, value] of Object.entries(obj2)) {
        obj1[key] = value;
    }
    

    或者,甚至只是:

    Object.assign(obj1, obj2)
    

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 2010-09-05
      • 1970-01-01
      相关资源
      最近更新 更多