查找下面这个数组所有的id
let arr = [
{
id: 1,
children: [{
id: 2,
children: null
}]
},
{
id: 3,
children: [{
id: 4,
children: null
}]
},
]
方法一:递归
对递归不了解的可以之前的一篇文章php的递归函数,虽然是用php写的,但是也很好理解
function findTreeNode(arr) {
let ids = []
function query(arr) {
arr.forEach(item => {
ids.push(item.id)
if (item.children) {
query(item.children)
}
})
}
query(arr)
console.log(ids)
}
方法二:全遍历
利用数组,遍历所有节点,如果在当前节点还有子节点,就把子节点push进数组
这个方法巧妙在利用数组前出后进,直到遍历完所有元素
function findTreeNode1(itemStack) {
let ids = []
while (itemStack.length) {
// 移除并返回第一个元素
let item = itemStack.shift()
ids.push(item.id)
if (item.children) {
itemStack = itemStack.concat(item.children)
}
}
console.log(ids)
}