说我有一个对象:{a: 'A', b: 'B', c: 'C'}
,我想从中创建一个具有相同值的新对象,但我想设置c: 'D'
。
这是什么语法? 我尝试过类似的事情:
{c: 'D', ...rest} = {...foo}
但这不是有效的语法。
答案 0 :(得分:1)
您将这样编写代码:
var obj1 = {a: 'A', b: 'B', c: 'C'}
var obj2 = {...obj1, c: 'D'}
console.log(obj2)
写...obj1
将用obj2
的内容填充obj1
,写c: 'D'
将覆盖c: 'c'
。
请注意,正如maheer所述,排序很重要,因为对象将从每个属性按顺序写入,这可能会使键的排序混乱,并设置不正确的值:
var obj = {a: 'A', b: 'B', c: 'C'}
var ex1 = {...obj, c: 'D'}
var ex2 = {c: 'D', ...obj}
var ex3 = {c: 'D', ...obj, c: 'E'}
console.log('Example 1:', ex1)
console.log('Example 2:', ex2)
console.log('Example 3:', ex3)
答案 1 :(得分:1)
您在右侧扩展了语法。
注意:首先使用Spread Operator,然后设置新属性。例如{c:'D',...foo}
不起作用。
let foo = {a: 'A', b: 'B', c: 'C'};
let res = {...foo, c:'D'};
console.log(res)
答案 2 :(得分:-2)
使用点差运算符,然后将要更改的财产放进去
let foo = {a : "Other A", b : "OtherB", c : "OtherC"}
let obj = {a: 'A', b: 'B', c: 'C'}
obj = {...foo, c : 'D'};
console.log(obj);