js嵌套多层数组对象修改每一层的key值
时间: 2024-02-16 13:59:59 浏览: 96
vue elementUI 表单校验功能之数组多层嵌套
5星 · 资源好评率100%
要修改多层嵌套的数组对象中每一层的 key 值,可以使用递归函数来实现。以下是一个示例代码:
```javascript
function modifyKeys(obj, oldKey, newKey) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (key === oldKey) {
obj[newKey] = obj[key];
delete obj[key];
key = newKey;
}
if (typeof obj[key] === 'object' && obj[key] !== null) {
modifyKeys(obj[key], oldKey, newKey);
}
}
}
return obj;
}
// 示例
var obj = {
a: {
b: [
{
c: 1,
d: 2
},
{
c: 3,
d: 4
}
]
},
e: {
f: 5,
g: [
{
h: 6
},
{
h: 7
}
]
}
};
obj = modifyKeys(obj, 'c', 'newC');
console.log(obj);
// 输出:{ a: { b: [ { newC: 1, d: 2 }, { newC: 3, d: 4 } ] }, e: { f: 5, g: [ { h: 6 }, { h: 7 } ] } }
```
上述代码中的 `modifyKeys` 函数与之前的示例函数类似,不同之处在于它会递归遍历多层嵌套的数组对象。函数首先遍历对象的每一个属性,如果当前属性的 key 等于旧的 key,则将此属性的 key 修改为新的 key,并更新 key 变量的值;然后判断当前属性是否为对象或数组,如果是,则递归调用 `modifyKeys` 函数,继续遍历子对象或子数组。最后返回修改后的对象。
阅读全文