javascript - 叉树先序遍历问题,如何取得每一个数据所在的层数?
本文介绍了javascript - 叉树先序遍历问题,如何取得每一个数据所在的层数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我有一个数组对象:
let treeObj = {
'1': [
{ '2': [{ '5': [{ '11': '11' }, { '12': '12' }, { '13': '13' }, { '14': '14' }] }] },
{ '3': [{ '6': '6' }, { '7': '7' }] },
{ '4': [{ '8': '8' }, { '9': '9' }, { '10': '10' }] }
]
}
通过先序遍历
的方法,我能够按顺序取得所有的key
值:
let traverseNode = (node) => {
if (typeof node !== 'string') {
let key = Object.keys(node)
console.log(key)
for (let i = 0; i < node[key].length; i++) {
traverseNode(node[key][i])
}
}
}
traverseNode(treeObj)
/* 输出结果如下
[ '1' ]
[ '2' ]
[ '5' ]
[ '11' ]
[ '12' ]
[ '13' ]
[ '14' ]
[ '3' ]
[ '6' ]
[ '7' ]
[ '4' ]
[ '8' ]
[ '9' ]
[ '10' ]
*/
现在我想知道每一个key
值所在的层数
,比如['1']
在第1层,[ '2' ][ '3' ][ '4' ]
在第2层,请问应该怎么做呢?
谢谢!
解决方案
加个标志就OK了
let traverseNode = (node, lv = 0) => {
if (typeof node !== 'string') {
let key = Object.keys(node)
console.log(key, lv)
for (let i = 0; i < node[key].length; i++) {
traverseNode(node[key][i], lv++)
}
}
}
您看这样可以不
---分割线---
之前明显得错误,(自己掌嘴)
let traverseNode = (node, lv = 1) => {
if (typeof node !== 'string') {
let key = Object.keys(node)
console.log(key, lv)
for (let i = 0; i < node[key].length; i++) {
traverseNode(node[key][i], lv + 1)
}
}
}
这样输出应该是符合题主意思的
这篇关于javascript - 叉树先序遍历问题,如何取得每一个数据所在的层数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文