Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在对象中添加父项名称(获取父项计数)_Javascript_Jquery - Fatal编程技术网

Javascript 如何在对象中添加父项名称(获取父项计数)

Javascript 如何在对象中添加父项名称(获取父项计数),javascript,jquery,Javascript,Jquery,我正在尝试创建一个对象,其中它的属性具有父计数和父名称。我可以计算父项..但我想在代码中添加父项名称。。 这是我的密码 代码 我的输出 {11: 0, 12: 1, 13: 1, 14: 1, 15: 2, 16: 1, 17: 1, 18: 1, 19: 1} 预计产量 { 11:{count:0,parent:[]}, 12:{count:1,parent:['11']}, 13:{count:1,parent:['12']}, 14:{count:1,parent:['13']}, 1

我正在尝试创建一个对象,其中它的属性具有父计数父名称。我可以计算父项..但我想在代码中添加父项名称。。 这是我的密码

代码

我的输出

{11: 0, 12: 1, 13: 1, 14: 1, 15: 2, 16: 1, 17: 1, 18: 1, 19: 1}
预计产量

{
11:{count:0,parent:[]},
12:{count:1,parent:['11']},
13:{count:1,parent:['12']},
14:{count:1,parent:['13']},
15:{count:2,parent:['13','14']},
16:{count:1,parent:['15']},
17:{count:1,parent:['15']},
18:{count:1,parent:['15']},
19:{count:1,parent:['18']},
}
尝试替换:

Object.keys(parent).forEach(function (k) { o[k] = parent[k].length; });
作者:


我建议将您的结构转换为更有用的结构。由于它似乎是一个有向图,自然的表示将是成对的列表
[from,to]

graph = []

node.forEach(n =>
    n.children.forEach(c =>
        graph.push([n.node_from, c.node_to])
    )
)
现在,您可以轻松找到每个给定节点的前面和后面的节点:

nodes_from = n => graph.filter(v => v[0] === n).map(v => v[1])
console.log(nodes_from(15)) // [ 16, 17, 18 ]

nodes_to = n => graph.filter(v => v[1] === n).map(v => v[0])
console.log(nodes_to(15)) // [ 13, 14 ]

为什么?重要吗?获取更多节点信息。理想情况下,子节点不需要知道它的父节点。如果你需要这个,这是你的设计倒退的标志。是的,我知道..但是要了解更多关于节点的信息,我需要这个。。
graph = []

node.forEach(n =>
    n.children.forEach(c =>
        graph.push([n.node_from, c.node_to])
    )
)
nodes_from = n => graph.filter(v => v[0] === n).map(v => v[1])
console.log(nodes_from(15)) // [ 16, 17, 18 ]

nodes_to = n => graph.filter(v => v[1] === n).map(v => v[0])
console.log(nodes_to(15)) // [ 13, 14 ]