Javascript递归函数与Lodash
我有一个数组,其中包含了,比如说,依赖对象的名称。 问题是依赖对象也可以有依赖对象等等。 我的代码只有两层,我需要实现一种递归的方法。 我的代码是:Javascript递归函数与Lodash,javascript,arrays,recursion,lodash,Javascript,Arrays,Recursion,Lodash,我有一个数组,其中包含了,比如说,依赖对象的名称。 问题是依赖对象也可以有依赖对象等等。 我的代码只有两层,我需要实现一种递归的方法。 我的代码是: if (obj.detailsObjects) { _.forEach(obj.detailsObjects, function (o, key) { if (window[o] instanceof QuadTable) { //limpamos o
if (obj.detailsObjects) {
_.forEach(obj.detailsObjects, function (o, key) {
if (window[o] instanceof QuadTable) {
//limpamos o details e reiniciamos a info
if ($.fn.DataTable.isDataTable('#' + window[o].tableId)) {
debugger;
window[o].tbl.clear();
window[o].tbl.columns.adjust().draw();
$('#' + window[o].tableId + "_info > .nRecords").text(window[o].tbl.data().count() + " " + window[o].i18nEntries.record);
if (window[o].editorXt) {
$('#' + window[o].tableId + '_xtForm')[0].reset();
}
}
//se o details for um master repetimos a operação para o details do details
//todo recursividade
if (window[o].detailsObjects) {
_.forEach(window[o].detailsObjects, function (ob, key) {
if (window[ob] instanceof QuadTable) {
if ($.fn.DataTable.isDataTable('#' + window[ob].tableId)) {
window[ob].tbl.clear();
window[ob].tbl.columns.adjust().draw();
$('#' + window[ob].tableId + "_info > .nRecords").text(window[ob].tbl.data().count() + " " + window[ob].i18nEntries.record);
if (window[ob].editorXt) {
$('#' + window[ob].tableId + '_xtForm')[0].reset();
}
}
} else if (window[ob] instanceof QuadForm) {
window[ob].clearForm();
}
window[ob].startIn = 0;
});
}
} else if (window[o] instanceof QuadForm) {
window[o].clearForm();
}
window[o].startIn = 0;
});
}
function recursiveFuntcion(obj) {
// base condition
if (!obj || !obj.detailsObjects)
return;
_.forEach(obj.detailsObjects, function(o, key) {
if (window[o] instanceof QuadTable) {
//limpamos o details e reiniciamos a info
if ($.fn.DataTable.isDataTable('#' + window[o].tableId)) {
debugger;
window[o].tbl.clear();
window[o].tbl.columns.adjust().draw();
$('#' + window[o].tableId + "_info > .nRecords").text(window[o].tbl.data().count() + " " + window[o].i18nEntries.record);
if (window[o].editorXt) {
$('#' + window[o].tableId + '_xtForm')[0].reset();
}
}
//recursive call
recursiveFunction(window[o]);
} else if (window[o] instanceof QuadForm) {
window[o].clearForm();
}
window[o].startIn = 0;
});
}