js递归处理树形结构数组值的替换、删除操作

诸位大佬,可否扫下右下方参与下“支付宝”红包活动!小弟万分感谢!

使用递归处理树形结构数组进行值的替换、删除等操作!

数据格式:

[{
id: '1',
'value': "123",
child: [{
id: '1_1',
'value': "1_1"
},
{
id: '1_2',
'value': "1_2"
},
{
id: '1_3',
'value': "六月初"
},
{
id: '1_4',
'value': "1_4",
child: [{
id: '1_4_1',
'value': "1_4_1"
},
{
id: '1_4_2',
'value': "1_4_1"
}
]
}
]
},
{
id: 2,
'value': "123",
child: [{
id: '2_1_1',
'value': "2_1_1"
},
{
id: '2_1_2',
'value': "2_1_2"
}
]
},
];

从数据中我们可以看出,里面有个键值为“六月初”的数据。那么我们要如何使用递归方法来将值为“六月初”替换为“六月初博客站”呢?

也许有的人会说:for循环就可以或者用别的什么方法;

这里已for来说明,如果是你知道有固定的层次,那么用for肯定可以轻易解决。但如果你不知道有多少层,只知道需要将某一次的数据为六月初的替换成“六月初博客站”。这个时候用for循环肯定是不显示的。

结果如图:


实例代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var a = [{
id: '1',
'value': "123",
child: [{
id: '1_1',
'value': "1_1"
},
{
id: '1_2',
'value': "1_2"
},
{
id: '1_3',
'value': "六月初"
},
{
id: '1_4',
'value': "1_4",
child: [{
id: '1_4_1',
'value': "1_4_1"
},
{
id: '1_4_2',
'value': "1_4_1"
}
]
}
]
},
{
id: 2,
'value': "123",
child: [{
id: '2_1_1',
'value': "2_1_1"
},
{
id: '2_1_2',
'value': "2_1_2"
}
]
},
];


function digui(arr, test) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].child.length > 0) {
for (let a = 0; a < arr[i].child.length; a++) {
if (arr[i].child[a].value == test) {
arr[i].child[a].value = "六月初博客站"
} else {
digui(arr[i].child[a], test)
}
}
}
if (arr[i].value == test) {
arr[i].value = "六月初博客站"
}
}
return arr;
}

console.log(digui(a, '六月初'))
</script>
</body>
</html>

代码比较简单就不多做解释。