# 有这样一个数组,需要将里面的键值name替换为label,sons替换为children
const data = [
{
'id': 1,
'name': '互联网应用'
},
{
'id': 2,
'name': '安全设备',
'sons': [
{
'id': 3,
'name': '防火墙',
'sons': [{
'id': 1,
'name': '安全设备'
}]
},
{
'id': 4,
'name': '路由器',
'sons': [
{
'id': 1,
'name': '安全设备'
}
]
}
]
},
{
'id': 5,
'name': '终端',
'sons': [
{
'id': 6,
'name': '电脑'
},
{
'id': 7,
'name': '打印机'
},
{
'id': 8,
'name': '扫描仪'
}
]
}
]
# 定义替换键值对
keyMap: {
name: 'label',
id:'value',
sons: 'children'
},
# 键值替换函数
replaceKey(obj) {
for (const key in obj) {
const newKey = this.keyMap[key]
if (newKey) {
obj[newKey] = obj[key]
delete obj[key]
}
}
},
# 由于数组对象中sons的究竟有几级不能确定,故递归进行键值替换操作
loop(data) {
data.forEach(item => {
console.log(item)
const obj = item
this.replaceKey(obj)
if (item.children && item.children.length) {
this.loop(item.children)
}
})
console.log(data)
},
# 完成替换
this.loop(data)