Как вызвать рекурсивную функцию для данных массива, используя Promises в Node Js - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь вызвать рекурсивную функцию в моем коде. Цикл, выполняющийся в первый раз, но рекурсивная функция, которая вызывается внутри функции, не работает. Вот мой код:

function buildDynamicMenu(elements,parentId)
{
 branch =new Array();
 elements.forEach(function(element){

    if (element['parent_id'] == parentId) {
       children =  buildDynamicMenu(elements, element['menu_id']); //Recursive function not working
       if (children) {
            element['children'] =children;

        }
        branch = element;

    } 
    });
    return branch;

}
 var parentId=0;
 buildDynamicMenu(data); // Array data

Я добавил образец массива, который я использую для этой логики, у массива есть меню и Идентификатор подменю, мы должны вызвать рекурсивную функцию, чтобы перебрать все подмассивы

 Array
(
[0] => Array
    (
        [menu_id] => 1
        [menu_name] => Home
        [parent_id] => 0
        [link] => #home
    )

[1] => Array
    (
        [menu_id] => 2
        [menu_name] => Web development
        [parent_id] => 0
        [link] => #web-dev
    )

[2] => Array
    (
        [menu_id] => 3
        [menu_name] => WordPress Development
        [parent_id] => 2
        [link] => #wp-dev
    )

[3] => Array
    (
        [menu_id] => 4
        [menu_name] => About w3school.info
        [parent_id] => 2
        [link] => #w3school-info
    )

[4] => Array
    (
        [menu_id] => 7
        [menu_name] => Javascript
        [parent_id] => 2
        [link] => #
    )

[5] => Array
    (
        [menu_id] => 8
        [menu_name] => Plugins
        [parent_id] => 7
        [link] => #plugin-dev
    )
)

1 Ответ

0 голосов
/ 17 января 2019
Похоже, что

не имеет экспорта в buildDynamicMenu. проверьте, есть ли один в 'этом'. попробуйте назначить функцию buildDynamicMenu некоторому const и выполнить его вызов.

Хорошо, вот мой демонстрационный функционал, очень хорошо работающий в машинописи nodejs:

function recursieve (p) {
console.log('in recursieve ', p);
if (p > 0) {
    recursieve (--p);
} } recursieve (10);// rec call

Так что, на мой взгляд, в вашем коде есть две проблемы: 1. «Это» не было указано на функцию. 2. рекурсивное условие, например, элементы пустые или id не совпадает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...