nodejs 有一个objA 拷贝一份到objB 当修改objB的时候 不影响objA 快速也无影响的方法 完整代码
时间: 2024-10-13 14:07:46 浏览: 24
nodejs简单实现一个爬虫代码
在Node.js中,如果你想要复制`objA`的内容并创建一个新的对象`objB`,并且对`objB`的修改不会影响到`objA`,你可以使用浅拷贝(shallow copy)或深拷贝(deep copy)。这里是一个使用`JSON.parse()`和`JSON.stringify()`快速实现浅拷贝的例子:
```javascript
let objA = { key: 'value', nestedObj: { innerKey: 'innerValue' } };
// 使用 JSON.parse 和 stringify 实现浅拷贝
let objB = JSON.parse(JSON.stringify(objA));
// 修改 objB
objB.key = 'new value';
objB.nestedObj.innerKey = 'new inner value';
console.log('objA:', objA); // objA: { key: 'value', nestedObj: { innerKey: 'innerValue' } }
console.log('objB:', objB); // objB: { key: 'new value', nestedObj: { innerKey: 'new inner value' } }
// 注意,这是浅拷贝,嵌套的对象只有一层会被复制,如果嵌套对象有引用其他对象,会共享引用
```
如果你想实现深拷贝,可以使用第三方库如`lodash`的`_.cloneDeep()`函数,或者自定义递归函数。
完整代码示例(使用`lodash`库):
```javascript
const _ = require('lodash');
let objA = { key: 'value', nestedObj: { innerKey: 'innerValue' } };
// 使用 lodash 的 deep clone 函数实现深拷贝
let objB = _.cloneDeep(objA);
// 修改 objB
objB.key = 'new value';
objB.nestedObj.innerKey = 'new inner value';
console.log('objA:', objA); // objA: { key: 'value', nestedObj: { innerKey: 'innerValue' } }
console.log('objB:', objB); // objB: { key: 'new value', nestedObj: { innerKey: 'new inner value' } }
```
阅读全文