如何不使用循环或逐个赋值,用一个JSON更新另一个JSON字段?
当然可以!在JavaScript里,你完全不用写循环或者手动逐个赋值,有两个简洁的原生方法能轻松实现这个需求:
方法1:对象展开运算符(Spread Operator)
这是ES6+里非常直观的写法,通过展开第一个对象的所有属性,再用第二个对象的属性覆盖对应字段,最终得到一个更新后的新对象:
const obj1 = { "name": "ehsan", "family": "shirzadi", "age": 20, "address": "...", "tel": "..." }; const obj2 = { "name": "ali", "family": "rezayee" }; // 注意:原JSON里的尾逗号要去掉,避免语法错误 // 生成更新后的新对象,不会修改原obj1 const updatedObj = { ...obj1, ...obj2 }; console.log(updatedObj); // 输出:{ name: 'ali', family: 'rezayee', age: 20, address: '...', tel: '...' }
方法2:Object.assign() 方法
这是ES6引入的另一种原生方法,它会把一个或多个源对象的属性复制到目标对象上。如果你想修改原对象,可以直接操作;更推荐的方式是创建新对象,避免污染原始数据:
const obj1 = { "name": "ehsan", "family": "shirzadi", "age": 20, "address": "...", "tel": "..." }; const obj2 = { "name": "ali", "family": "rezayee" }; // 方式1:创建新对象(推荐,不修改原obj1) const updatedObj = Object.assign({}, obj1, obj2); // 方式2:直接修改原obj1(不推荐,会改变原始数据) // Object.assign(obj1, obj2); console.log(updatedObj); // 输出:{ name: 'ali', family: 'rezayee', age: 20, address: '...', tel: '...' }
两种方法的核心逻辑都是自动覆盖同名属性,完全不需要手动写循环或者逐个赋值,非常高效简洁。
内容的提问来源于stack exchange,提问作者ehsan shirzadi
相关产品推荐
相关产品推荐

