- 有个这样一个树,子节点上的值表示和父节点的值的差,如下图,如果根节点node1是10,node2的值为10+3= 13,node3为10+2=12,node6为13-2=11
const tree = {
name: "node1",
value: 10,
offset: 0,
chilren: [
{
name: "node2",
offset: 3,
chilren: [
{
name: "node5",
offset: 4
},
{
name: "node6",
offset: -2
}
]
},
{
name: "node3",
offset: 2
},
{
name: "node4",
offset: 5,
chilren: [
{
name: "node7",
offset: 3
}
]
}
]
}
function getNodeValue(nodeName, tree, fatherValue) {
if (Array.isArray(tree)) {
tree.forEach(item => {
if (!item.value) {
item['value'] = fatherValue + item.offset
}
if (nodeName === item.name) {
console.log('拿到指定名字的 value:', item.value)
}
item.chilren && getNodeValue(nodeName, item.chilren, item.value)
})
} else {
if (!tree.value) {
tree['value'] = fatherValue + tree.offset
}
if (nodeName === tree.name) {
console.log('拿到指定名字的 value:', tree.value)
}
tree.chilren && getNodeValue(nodeName, tree.chilren, tree.value)
}
}
getNodeValue('node5', tree)