使用递归更改后台数据的键名
如下图,将键名id改为value
,键名name改为label
var arrayObj = [
{id:'value1',name:'value2',children:[
{id:'value1',name:'value2',children:[
{id:'value1',name:'value2'},
{id:'value1',name:'value2'}
]}
]},
{id:'value1',name:'value2'}
];
代码如下:
//更改键名
function changeKey(list,newKey,oldKey){
list.forEach(item=>{
if(item.children && item.children.length>0){ //存在子级
item[newKey] = item[oldKey];
delete item[oldKey];
changeKey(item.children,newKey,oldKey) //递归调用
}else { //没有子级
item[newKey] = item[oldKey];
delete item[oldKey] //删除原来的键值对
}
});
return list;
}
//循序键值对,依次更改
function getData(list,obj) {
var keys = Object.keys(obj); //获得对象的所有键名
keys.forEach(item=>{
list = changeKey(list,obj[item],item)
});
return list
}
//将需要更改的键名放到一个对象中,键名为原来的键名,键值为更改后的键名
console.log(getData(arrayObj,{id:'value',name:'label'}))
效果如图: