如何一次性修改JavaScript中obj2的属性值,而非逐个修改?
一次性修改对象属性的几种方法
针对你的需求,有两种简单直接的方式可以一次性完成obj2的属性修改,不用逐个赋值:
方法1:使用Object.assign()合并属性
可以通过Object.assign()把需要修改的属性一次性合并到obj2上,嵌套的children也能同步处理:
const obj1={ name:`serag`, age:30, children: { daughter:`leila`, son:`seif` } }; const obj2 = JSON.parse(JSON.stringify(obj1)); // 一次性修改所有目标属性 Object.assign(obj2, { name: `omar`, age: 30, // 若值和原对象一致可省略 children: { ...obj2.children, // 保留children中未修改的属性(如果有) daughter: `huda`, son: `ahmed` } }); console.log(obj2); // 输出:{ name: 'omar', age: 30, children: { daughter: 'huda', son: 'ahmed' } }
方法2:对象展开运算符直接覆盖
利用ES6对象展开运算符,展开原对象后直接覆盖需要修改的属性,写法更简洁:
const obj1={ name:`serag`, age:30, children: { daughter:`leila`, son:`seif` } }; // 注意这里把const改成let,方便重新赋值 let obj2 = JSON.parse(JSON.stringify(obj1)); // 一次性完成修改 obj2 = { ...obj2, name: `omar`, age: 30, children: { daughter: `huda`, son: `ahmed` } }; console.log(obj2);
注意:你之前写的let {name,age,children}=obj2;只是解构出了属性的临时变量,修改这些变量不会影响obj2本身,所以可以直接删掉。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

