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