Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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_Ecmascript 6 - Fatal编程技术网

Javascript 将树展平到数组并手动给出索引值

Javascript 将树展平到数组并手动给出索引值,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个树形结构。我想把它展平成一组对象。我可以将其展平,但我希望为每个对象增加newIndex 它可以有任意数量的元素,深度可以是任何东西。 请随意提出任何其他更好的方法 const树=[ { “id”:1, “儿童”:[] }, { “id”:2, “儿童”:[ { “id”:6, “儿童”:[] }, { “id”:7, “儿童”:[ { “id”:8, “儿童”:[] } ] } ] }, { “id”:3, “儿童”:[ { “id”:9, “儿童”:[] } ] } ]; 控制台.

我有一个树形结构。我想把它展平成一组对象。我可以将其展平,但我希望为每个对象增加
newIndex

它可以有任意数量的元素,深度可以是任何东西。

请随意提出任何其他更好的方法

const树=[
{
“id”:1,
“儿童”:[]
},
{
“id”:2,
“儿童”:[
{
“id”:6,
“儿童”:[]
},
{
“id”:7,
“儿童”:[
{
“id”:8,
“儿童”:[]
}
]
}
]
},
{
“id”:3,
“儿童”:[
{
“id”:9,
“儿童”:[]
}
]
}
];
控制台.日志(展平(树))
函数展平(树,索引=10,flatArray=[]){
如果(tree&&tree.length>0){
for(树的常数){
push({id:tr.id,newIndex:index++});
if(tr.children&&tr.children.length>0){
this.flatte(tr.children,index,flatArray);
}
}
}
返回平面阵列;

}
你可以拿一个物体来跟踪标记。这种方法会更新对象,并且由于相同的对象引用,计数器会沿着所有函数调用进行更新

函数展平(树,索引={index:10},flatArray=[]){
如果(tree&&tree.length>0){
for(树的常数){
push({id:tr.id,newIndex:index.index++});
if(tr.children&&tr.children.length>0){
展平(tr.children,index,flatArray);
}
}
}
返回平面阵列;
}
const tree=[{id:1,children:[]},{id:2,children:[{id:6,children:[]},{id:7,children:[{id:8,children:[]}]},{id:3,children:[{id:9,children:[]}]}];
console.log(展平(树))
。作为控制台包装{最大高度:100%!重要;顶部:0;}