【问题标题】:Correct way of object destructuring对象解构的正确方法
【发布时间】:2018-11-12 06:02:21
【问题描述】:

我有一个场景,我从一个 Promise 中收到一个 obj,并且需要将这个对象的一些键添加到另一个对象。例如:

// Received from promise
object_1 = {
    name: 'SH'
};

// Want to add object_1.name to object_2 
object_2 = {
    id: 1234
};

通常我可以这样做,但我想通过对象解构来做到这一点

object_2.name = object_1.name;

拥有:

object_2 = {
    id: 1234,
    name: 'SH'
};   

【问题讨论】:

  • 你可能想要对象传播,它只需要一行,不像解构? const object_2 = { id: 1234, ...object_1 }
  • @CertainPerformance 这可能是module.exports 的一部分,object_1 也在其中被导出然后导入另一个文件。
  • 确实没有充分的理由使用解构来分配单个属性。
  • 虽然上面评论中的@CertainPeformances 建议达到了您在问题中给出的预期结果...您需要注意,如果object_1 也有id 属性,可以说值为6789 - 那么你的 object_2 将是 {id: 6789, name: "SH"}。即object_1 中的id 将优先于指定的id: 1234

标签: javascript ecmascript-6 destructuring object-destructuring


【解决方案1】:

您可以将destructuring assignment 用于带有object property assignment pattern [YDKJS: ES6 & Beyond] 的目标对象/属性。

var object_1 = { name: 'SH' },
    object_2 = { id: 1234 };

({ name: object_2.name } = object_1);

console.log(object_2);

【讨论】:

    【解决方案2】:

    您可以通过像这样使用对象破坏来实现预期的输出:

    // Received from promise
    object_1 = {
        name: 'SH'
    };
    
    // Want to add object_1.name to object_2 
    object_2 = {
        id: 1234
    };
    
    object_2 = {
      ...object_2,
      ...object_1
    }
    

    【讨论】:

    • 这根本不是解构。您正在使用对象文字传播语法。
    • 答案确实有效,但它添加了 object_1 的所有属性。
    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 2017-05-02
    • 1970-01-01
    • 2015-11-28
    • 2011-05-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多