Javascript 简化JS中嵌套的父子代码

Javascript 简化JS中嵌套的父子代码,javascript,Javascript,我有非常糟糕的JS代码,我需要使用do while或像for(I=0;I只是一种抽象方法)这样的增量来缩短它(我仍然怀疑,代码是Javascript而不是Java) 这是yopur代码的一种模式,您可以在其中迭代一些数据,检查类型并迭代一个路径。最后,您将一个新对象放入行 for (child in parentFolder.childEntity) { // *in* maybe wrong, just to mention ... if (child.vimType == "Fold

我有非常糟糕的JS代码,我需要使用do while或像
for(I=0;I只是一种抽象方法)这样的增量来缩短它(我仍然怀疑,代码是Javascript而不是Java)

这是yopur代码的一种模式,您可以在其中迭代一些数据,检查类型并迭代一个路径。最后,您将一个新对象放入

for (child in parentFolder.childEntity) { // *in* maybe wrong, just to mention ...
    if (child.vimType == "Folder") {
        var current = child.parent
        var path = child.name
        do {
            var parent = current
            if (parent.name != "vm") path = parent.name + "\\" + path;
            current = current.parent
        } while (current.parent != null)
        row.push({ Name: child.name, Path: path });
         // next same pattern with child.childEntity
    }
}
您可以将此模式转换为一个函数,并将用于迭代的数据和目标数组
(如果这是一个嵌套函数,则可能不是)

然后进行一次否定检查,并在没有嵌套块的情况下继续循环

然后获取路径值并推送对象

最后退出递归调用或使用新数据再次调用函数。在您的代码中,您选择嵌套方法,在这里,您可以检查
child.childEntity
是否错误

function iter(data, row) {
    for (child in data) {

        if (child.vimType !== "Folder") continue;

        var current = child.parent
        var path = child.name

        do {
            var parent = current;
            if (parent.name !== "vm") path = parent.name + "\\" + path;
            current = current.parent
        } while (current.parent != null)

        row.push({ Name: child.name, Path: path });

        if (!child.childEntity) continue;

        iter(child.childEntity, row);
    }
}

// call
iter(parentFolder.childEntity, row);

Java或JavaScript?请添加您迭代的数据。请将想要的结果添加为object/array。每个(VcFolders中的VcFolder)的
是什么
doing?这不是javascript。@NinaScholz我只是想问同样的问题,真的。我查了一下这是否是我不知道的新Java语法。这是JS。我附上了一张图片,显示了我正在迭代的数据。想要的结果应该是一个名为“row”的对象数组@NinaScholzThanks一吨!@NinaScholz。我有点尴尬,为什么我不能想到自己做一个嵌套函数调用。有时候你只是需要其他人来指出明显的问题!
for (child in parentFolder.childEntity) { // *in* maybe wrong, just to mention ...
    if (child.vimType == "Folder") {
        var current = child.parent
        var path = child.name
        do {
            var parent = current
            if (parent.name != "vm") path = parent.name + "\\" + path;
            current = current.parent
        } while (current.parent != null)
        row.push({ Name: child.name, Path: path });
         // next same pattern with child.childEntity
    }
}
function iter(data, row) {
    for (child in data) {

        if (child.vimType !== "Folder") continue;

        var current = child.parent
        var path = child.name

        do {
            var parent = current;
            if (parent.name !== "vm") path = parent.name + "\\" + path;
            current = current.parent
        } while (current.parent != null)

        row.push({ Name: child.name, Path: path });

        if (!child.childEntity) continue;

        iter(child.childEntity, row);
    }
}

// call
iter(parentFolder.childEntity, row);