在 JavaScript 中,对 JSON 数组进行深度赋值(deep copy)可以使用多种方法,其中最常见的是使用递归。下面是一个简单的示例,演示如何对一个 JSON 数组进行深度赋值:
// 原始 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