【问题标题】:How to assign an object some keys by javaScript spread syntax如何通过javascript传播语法为对象分配一些键
【发布时间】:2018-11-10 13:11:18
【问题描述】:

我有以下对象:

var inv = {roles: {"xxx00": {roleId: "zzzz33"}}, assign: [1, 2, 3] }

这是结果:

{ roles: { "1234": {roleId: null}, "5678": {roleId: null}}}

我需要用这个结果合并对象:

{roles: {"1234": {roleId: null}, "5678": {roleId: null}, "xxx00": {roleId: "zzzz33"}}, assign: [1, 2, 3] }

我需要使用扩展语法来获得它

知道在不丢失原始角色 ID 的情况下应该如何获得此结果的语法吗?

【问题讨论】:

  • 我会尝试类似({...a, ...b}) 的方法,其中ab 是你的两个对象。
  • ... 构造不是“运算符”。它是一个句法元素,但不是表达式语法的一部分。

标签: javascript ecmascript-6 spread-syntax


【解决方案1】:

下面是两个例子,一个没有对象突变,另一个有。

let inv = {roles: {"xxx00": {roleId: "zzzz33"}}, assign: [1, 2, 3] };
let res = { roles: { "1234": {roleId: null}, "5678": {roleId: null}}};

// create new object to spec, no mutation.
let combine = { roles: { ...inv.roles, ...res.roles, }, assign: [ ...inv.assign ] };
console.log(combine);

// mutate original object.
console.log(inv);
inv.roles = {  ...inv.roles, ...res.roles, };
console.log(inv);

【讨论】:

    【解决方案2】:

    就这样做

    const consolidated = {...inv, roles: {...inv.roles, ...result.roles} };
    

    假设您只想将结果角色与 inv var 角色合并,这将基于 inv 创建合并但结果角色合并到 inv 角色中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2019-06-06
      • 2019-02-12
      • 2020-09-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多