js中every实现深拷贝
时间: 2023-07-19 18:03:28 浏览: 84
`every` 方法并不适合实现深拷贝,因为它只会对数组中的每个元素进行遍历,并返回布尔值表示是否所有元素都符合条件。要实现深拷贝,可以使用 `JSON.parse(JSON.stringify(obj))` 或者递归实现深度遍历,并用 Object.assign 或者直接赋值生成新的对象。
下面是一个使用递归实现深拷贝的例子:
```javascript
function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let copy = Array.isArray(obj) ? [] : {};
Object.keys(obj).forEach(key => {
copy[key] = deepCopy(obj[key]);
});
return copy;
}
```
这个函数会对传入的对象进行遍历,并生成一个新的对象作为拷贝。如果遇到的元素是简单类型,则直接赋值;如果是对象或数组,则递归调用这个函数生成对应的新对象。
阅读全文