// 原始 JSON 数组
var originalArray = [
{"name": "John", "age": 25, "city": "New York"},
{"name": "Alice", "age": 30, "city": "San Francisco"}
];
// 使用递归进行深度赋值
function deepCopyArray(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'object' && arr[i] !== null) {
// 如果是对象或数组,递归调用进行深度赋值
result[i] = (Array.isArray(arr[i])) ? deepCopyArray(arr[i]) : deepCopyObject(arr[i]);
} else {
// 如果是基本数据类型,直接赋值
result[i] = arr[i];
}
}
return result;
}
// 对象的深度赋值函数
function deepCopyObject(obj) {
var result = {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
// 如果是对象或数组,递归调用进行深度赋值
result[key] = (Array.isArray(obj[key])) ? deepCopyArray(obj[key]) : deepCopyObject(obj[key]);
} else {
// 如果是基本数据类型,直接赋值
result[key] = obj[key];
}
}
}
return result;
}
// 进行深度赋值
var copiedArray = deepCopyArray(originalArray);
// 修改原始数组
originalArray[0].age = 26;
// 输出原始数组和深度赋值后的数组
console.log("Original Array:", originalArray);
console.log("Copied Array:", copiedArray);
在上述代码中,deepCopyArray 和 deepCopyObject 函数分别用于深度赋值数组和对象。递归调用确保对数组和对象中嵌套的数组和对象进行深度赋值,而不是简单的引用复制。这样,修改原始数组不会影响深度赋值后的数组。
转载请注明出处:http://www.zyzy.cn/article/detail/4582/JSON