如何通过javaScript扩展语法为对象分配一些键

时间:2018-05-31 13:38:44

标签: javascript ecmascript-6 spread-syntax

我有以下对象:

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] }

我需要使用传播语法

知道如何在不丢失原始roleId的情况下获取此结果的语法?

2 个答案:

答案 0 :(得分:2)

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

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);

答案 1 :(得分:1)

就这样做

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

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