Javascript 简化JS中嵌套的父子代码
我有非常糟糕的JS代码,我需要使用do while或像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
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);