如何循环遍历把多维数组中的某个值改成需要的值
递归函数的用法
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 函数。这个函数可以处理任意深度的嵌套结构。你可以根据需要调整它来满足你的具体需求