js实现深拷贝数组或json数据代码

前端开发中经常会遇到需要进行数据拷贝操作,通常对于数据的拷贝分为深拷贝和浅拷贝两种。不同的需求下,也需要根据情况对数据进行深拷贝或浅拷贝。

本篇文章分享一个实现深拷贝的公用方法,实现数组json或json数组的数据深拷贝操作。

数据深拷贝公用方法:

function deepClone(source){
let targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
for(let keys in source){ // 遍历目标
if(source.hasOwnProperty(keys)){//因为for in 会访问到原型上的东西,所以这里使用hasOwnProperty
if(source[keys] && typeof source[keys] === 'object'){ // 如果值是对象,就递归一下
targetObj[keys] = source[keys].constructor === Array ? [] : {};
targetObj[keys] = deepClone(source[keys]);
}else{ // 如果不是,就直接赋值
targetObj[keys] = source[keys];
}
}
}
return targetObj;
}

深拷贝的数据进行改变后不会影响原数据,可以对拷贝后的新数据进行合理的使用而不担心影响原数据。

六月初字帖坊小程序 你想要的字帖模板及工具,这里都有!