js对象深度拷贝合并多个对象
时间: 2023-06-30 15:25:39 浏览: 94
如果需要深度拷贝合并多个对象,可以使用递归实现。具体步骤如下:
1. 定义一个函数 `deepMergeObjects`,它接受任意数量的参数,每个参数都是一个对象。
2. 创建一个空对象 `result`,用于保存合并后的结果。
3. 遍历所有的参数对象,对于每个对象的每个属性,判断它是否是一个对象。如果是一个对象,则递归调用 `deepMergeObjects`,将其属性合并到 `result` 中。否则,直接将属性赋值给 `result`。
4. 返回合并后的结果 `result`。
示例代码:
```javascript
function deepMergeObjects(...objects) {
const result = {};
for (const obj of objects) {
for (const key in obj) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
result[key] = deepMergeObjects(result[key] || {}, obj[key]);
} else {
result[key] = obj[key];
}
}
}
return result;
}
const obj1 = { a: { b: 1 }, c: { d: 2 } };
const obj2 = { a: { c: 3 }, e: { f: 4 } };
const obj3 = { g: 5 };
const mergedObj = deepMergeObjects(obj1, obj2, obj3);
console.log(mergedObj); // { a: { b: 1, c: 3 }, c: { d: 2 }, e: { f: 4 }, g: 5 }
```
在上面的代码中,我们定义了一个函数 `deepMergeObjects`,它接受任意数量的参数 `...objects`,每个参数都是一个对象。函数首先创建一个空对象 `result`,用于保存合并后的结果。然后遍历所有的参数对象,对于每个对象的每个属性,判断它是否是一个对象。如果是一个对象,则递归调用 `deepMergeObjects`,将其属性合并到 `result` 中。否则,直接将属性赋值给 `result`。最终返回合并后的结果 `result`。
阅读全文