循环遍历把多维数组中的某个值改成需要的值

如何循环遍历把多维数组中的某个值改成需要的值

递归函数的用法
function replaceValueInNestedObjects(data, key, oldValue, newValue) {
    if (Array.isArray(data)) {
        // 如果数据是一个数组,则遍历它的每个元素
        data.forEach(item => replaceValueInNestedObjects(item, key, oldValue, newValue));
    } else if (typeof data === 'object' && data !== null) {
        // 如果数据是一个对象,则遍历它的每个属性
        Object.keys(data).forEach(k => {
            if (k === key && data[k] === oldValue) {
                // 如果当前键和值匹配,则替换为新的值
                data[k] = newValue;
            } else {
                // 否则,递归检查当前属性的值
                replaceValueInNestedObjects(data[k], key, oldValue, newValue);
            }
        });
    }
}

// 示例多层嵌套对象数组
const nestedData = [
    { id: 1, value: 5 },
    [
        { id: 2, value: 5 },
        { id: 3, value: 10 }
    ],
    {
        id: 4,
        value: 5,
        nested: [
            { id: 5, value: 5 },
            { id: 6, value: 15 }
        ]
    }
];

// 调用函数
replaceValueInNestedObjects(nestedData, 'value', 5, 10);

// 打印结果
console.log(nestedData);
data: 需要被遍历的数据。
key: 需要被修改的属性名。
oldValue: 需要被替换的旧值。
newValue: 新的值。
函数首先检查 data 是否是一个数组或对象。如果是数组,它会遍历每个元素并递归调用自身。如果是对象,它会遍历每个属性,并检查属性名是否匹配 key。如果匹配并且属性值等于 oldValue,则将其替换为 newValue。如果不匹配,或者属性值本身也是一个对象或数组,则递归调用 replaceValueInNestedObjects 函数。这个函数可以处理任意深度的嵌套结构。你可以根据需要调整它来满足你的具体需求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值