javascript 递归以按数组位置查找 children

javascript recursion to find children by array position

我有一堆任务,我需要根据我点击的任务找到所有 children。我想要一组位置 [1,2, 3] 返回,以便我可以处理这些行。

这是一个例子。

    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)

感谢帮助

此代码有两个问题:首先是您没有累积值。您需要在 out 数组中返回对 getNestedChildren 的嵌套调用的输出。其次,我不知道你为什么在运行时更改任何 parentIDs,它应该是一个只读操作。

外卖

        if (children.length) {
            d.parentID = x;
        }

并将其替换为

        out = out.concat(children);