通过数组位置查找子级的javascript递归
我有一大堆任务,我需要根据我单击的任务查找所有子项。我希望返回一个位置[1,2,3]数组,以便处理这些行 这里有一个例子通过数组位置查找子级的javascript递归,javascript,recursion,Javascript,Recursion,我有一大堆任务,我需要根据我单击的任务查找所有子项。我希望返回一个位置[1,2,3]数组,以便处理这些行 这里有一个例子 var taskAR = [ { "isParent": true, "parentID": null, "level": 0 }, { "isParent": true, "parentID": 0, "level": 1 }, {
var taskAR = [
{
"isParent": true,
"parentID": null,
"level": 0
},
{
"isParent": true,
"parentID": 0,
"level": 1
},
{
"isParent": true,
"parentID": 1,
"level": 2
},
{
"isParent": false,
"parentID": 2,
"level": 3
},
{
"isParent": false,
"parentID": 2,
"level": 3
},
{
"isParent": false,
"parentID": null,
"level": 0
},
{
"isParent": true,
"parentID": null,
"level": 0
},
{
"isParent": false,
"parentID": 7,
"level": 1
}
];
function getNestedChildren(arr, parentID) {
var out = []
for (var x = 0, len = arr.length; x < len ; x++) {
var d = arr[x];
if (d.parentID == parentID) {
var children = getNestedChildren(arr, x);
if (children.length) {
d.parentID = x;
}
out.push(x)
}
}
return out
}
getNestedChildren(this.master.tasks, parentID)
var taskAR=[
{
“isParent”:对,
“parentID”:空,
“级别”:0
},
{
“isParent”:对,
“parentID”:0,
“级别”:1
},
{
“isParent”:对,
“家长ID”:1,
“级别”:2
},
{
“isParent”:错误,
“家长ID”:2,
“级别”:3
},
{
“isParent”:错误,
“家长ID”:2,
“级别”:3
},
{
“isParent”:错误,
“parentID”:空,
“级别”:0
},
{
“isParent”:对,
“parentID”:空,
“级别”:0
},
{
“isParent”:错误,
“家长ID”:7,
“级别”:1
}
];
函数getNestedChildren(arr,parentID){
var out=[]
对于(变量x=0,len=arr.length;x
感谢您的帮助此代码有两个问题:第一个问题是您没有累积值。您需要在
out
数组中返回对getNestedChildren
的嵌套调用的输出。第二,我不知道为什么要更改任何parentID
s当这个运行时,它应该是一个只读操作
取出
if (children.length) {
d.parentID = x;
}
并将其替换为
out = out.concat(children);
实际问题是什么?而且,您是否有能力更改数据的结构?有比您使用的更好的方法来表示父cheild关系/Yep如果有更好的方法,我可以更改它。这个想法是找到父级的所有子级,然后从找到的数组和显示器上处理它们。我认为问题在于:如果(children.length){d.parentID=x;}我需要在其中放入另一个循环来获得位置吗,在DOM中可以看到一种很好的组织父子关系的方法:一个二叉树,左分支指向第一个子树,右分支指向下一个子树。它可能预示着跳过列表的想法,以消除扁平化的需要。。。