javascript递归按数组位置查找子项

标签 javascript recursion

我有很多任务,我需要根据我单击的任务找到所有子项。我想要一个位置数组 [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)

感谢您的帮助

最佳答案

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

取出来

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

并将其替换为

        out = out.concat(children);

关于javascript递归按数组位置查找子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632649/

相关文章:

javascript - 使用 knockout 自定义绑定(bind)时,jquery 数据表不会删除行

javascript - Uglify-js 不会破坏变量名

java - java中通过递归检查数组中是否存在sum为sum的路径

python - 为什么我的带有 if-elif 语句的递归函数返回 None?

c - 32位二进制到十进制的转换

java - 多次返回的递归混淆

javascript - 使用 Base64 图像时 Canvas.ToDataUrl 存在安全违规

javascript - 使用 JavaScript 访问框架的文档对象

javascript - 初始砖石荷载上的小间隙,在调整窗口大小后消失

java递归测试arraylist是否相等