const node = {
"id": 1,
"level": 0,
"children": [{
"id": 2,
"level": 0,
"children": [{
"id": 4,
"level": 0,
"children": []
}, {
"id": 5,
"level": 0,
"children": []
}, {
"id": 6,
"level": 0,
"children": []
}]
}, {
"id": 3,
"level": 0,
"children": []
}]
}
const measure = (node, mode = 'breadth') => {
let targetNodeList = [{ id: node.id, level: node.level }]
function updateNodeLevel(node, parentLevel = node.level) {
const { children } = node
if (!Array.isArray(children) || children.length === 0) {
return
}
if (mode === 'depth') {
children.forEach(node => {
targetNodeList.push({ id: node.id, level: parentLevel + 1 })
updateNodeLevel(node, parentLevel + 1)
})
return
}
if (mode === 'breadth') {
children.forEach(node => {
targetNodeList.push({ id: node.id, level: parentLevel + 1 })
})
children.forEach(node => {
updateNodeLevel(node, parentLevel + 1)
})
}
}
updateNodeLevel(node)
return targetNodeList
}
console.log(measure(node))