javascript 递归函数的深度
DEPTH of javascript recursive function
我试图在 mongodb 中保存一个 json 结构,但我想获得每个项目在循环时具有的递归深度 (DEPTH
)这个功能。我怎样才能实现这个重用以下功能?:
_.mixin({
importJsonItemsToMongo: function (obj, opt, iterator) {
function recurse (json_item) {
// console.log(`level ${DEPTH}: ${json_item.name}`);
db.collection('json_import_items').insert(json_item);
_.each(json_item.child_items, _.importJsonItemsToMongo);
};
recurse(obj);
}
});
_.each(jsonResponse.child_items, _.importJsonItemsToMongo);
我不知道 underscore.js 是如何工作的,但我想,可以这样做:
_.mixin({
importJsonItemsToMongo: function (obj, depth) {
console.log(`level ${DEPTH}: ${obj.name}`);
db.collection('json_import_items').insert(obj);
_.each(obj.child_items, function(x) {
_.importJsonItemsToMongo(x, depth + 1);
});
}
});
_.each(jsonResponse.child_items, function(x) {
_.importJsonItemsToMongo(x, 0);
});
我刚刚添加了深度参数;并删除了未使用的参数,如果需要,您可以将其添加回去。
尝试关闭深度。
_.mixin({
importJsonItemsToMongo: function(DEPTH) {
return function (obj, opt, iterator) {
function recurse (json_item) {
// console.log(`level ${DEPTH}: ${json_item.name}`);
db.collection('json_import_items').insert(json_item);
_.each(json_item.child_items, _.importJsonItemsToMongo(DEPTH + 1));
};
recurse(obj);
};
}
});
_.each(jsonResponse.child_items, _.importJsonItemsToMongo(0));
我试图在 mongodb 中保存一个 json 结构,但我想获得每个项目在循环时具有的递归深度 (DEPTH
)这个功能。我怎样才能实现这个重用以下功能?:
_.mixin({
importJsonItemsToMongo: function (obj, opt, iterator) {
function recurse (json_item) {
// console.log(`level ${DEPTH}: ${json_item.name}`);
db.collection('json_import_items').insert(json_item);
_.each(json_item.child_items, _.importJsonItemsToMongo);
};
recurse(obj);
}
});
_.each(jsonResponse.child_items, _.importJsonItemsToMongo);
我不知道 underscore.js 是如何工作的,但我想,可以这样做:
_.mixin({
importJsonItemsToMongo: function (obj, depth) {
console.log(`level ${DEPTH}: ${obj.name}`);
db.collection('json_import_items').insert(obj);
_.each(obj.child_items, function(x) {
_.importJsonItemsToMongo(x, depth + 1);
});
}
});
_.each(jsonResponse.child_items, function(x) {
_.importJsonItemsToMongo(x, 0);
});
我刚刚添加了深度参数;并删除了未使用的参数,如果需要,您可以将其添加回去。
尝试关闭深度。
_.mixin({
importJsonItemsToMongo: function(DEPTH) {
return function (obj, opt, iterator) {
function recurse (json_item) {
// console.log(`level ${DEPTH}: ${json_item.name}`);
db.collection('json_import_items').insert(json_item);
_.each(json_item.child_items, _.importJsonItemsToMongo(DEPTH + 1));
};
recurse(obj);
};
}
});
_.each(jsonResponse.child_items, _.importJsonItemsToMongo(0));