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));