关于js递归的问题?
在处理树形数组时,只会写那种不是带返回值的递归
function setChildrenLevel(data, level, bgStyle){
data.senLevName = level
data.bgStyle = bgStyle
if(data.children && data.children.length){
data.children.forEach(item=>{
setChildrenLevel(item, level, bgStyle)
})
}
}
var data = {
name: 1,
children:[
{
name: 2,
children: [
{
name: 3
}
]
},
{
name: 4,
}
]
}
function setChildrenLevel(data, level, bgStyle){
data.senLevName = level
data.bgStyle = bgStyle
if(data.children && data.children.length){
data.children.forEach(item=>{
setChildrenLevel(item, level, bgStyle)
})
}
}
setChildrenLevel(data, 4, 'red')
console.log(data)
如何写那种是return的递归去处理树形数组,有什么模板吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你这种递归修改数据的是不需要返回值的,如果你要复制一份,直接深度克隆
data
就可以了。带返回值的比如这种——
它的功能是找到对象树中的有
isMateList
标记的第一个元素,找到之后会层层返回。当然,我这个
isMateList
只有一个,所以直接深度遍历找到它就可以了,如果是有多个目标的话,是不能break
的,对应的res
也应该换成数组或者对象以便存储所有返回值:结果