//深拷贝
const deepClone = (obj) => {
var target = {};
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (typeof obj[key] === 'object') {
target[key] = deepClone(obj[key]);
} else {
target[key] = obj[key];
}
}
}
return target;
}
var originalArray = [
{
"MaterialCode": "",
"MaterialName": "物料Yy7O",
"MaterialSpec": "物料Yy7O",
},
{
"MaterialCode": "",
"MaterialName": "物料KjTn",
"MaterialSpec": "物料KjTn",
}
];
var copyArr = deepClone(originalArray );
copyArr[0].MaterialName = '张三' //改变新数组的数据
copyArr[0].MaterialSpec = '张三', //改变新数组的数据
console.log("原数组",originalArray)
console.log("新数组",copyArr )
该数组包含了原数组中每个元素的引用。如果数组中的元素是基本类型(如数字、字符串、布尔值),那么引用意味着复制这些值。但是,如果数组中的元素是对象(包括数组、函数等),那么引用意味着复制的是对象的内存地址,而不是对象本身。
深拷贝意味着不仅要复制数组本身,还要复制数组中的每个对象,以及这些对象中包含的任何嵌套对象。