Задать вопрос
@BKaiyrbekov

Что я пропустил, при работе с рекурсией?

есть такой массив
const dataArr = [
    {
          "id": 28,
          "title": "Бесплатные материалы",
          "children": [
           {
                "id": 29,
                "title": "Lorem", 
                "children": [
                    {
                        "id": 32,
                        "title": "Lorem", 
                        "children": []
                    },
                    {
                        "id": 30,
                        "title": "Lorem", 
                        "children": []
                    }
                ],
           }, 
           {
            "id": 33,
            "title": "Lorem", 
            "children": [
                {
              "id": 35,
              "title": "Lorem", 
              "children": []
                }, 
                {
                "id": 34,
                "title": "Lorem", 
                "children": []
                }
            ],
          }
        ],
    }
]

а еще есть какой то переменное который перезаписывает id любого объекта
let objID = 29
и есть функция(рекурсия) которая обрабатывает этот массив
funtion test1(arr) {
        let res = [];
        arr.forEach(item => {
          if (item.id === objID) {
            res.push(item)
          } else {
            test1(item.children)
          }
        });
        console.log('funtion test1', res)
        return res
}
console.log('result', test1(dataArr))

ожидаемый результат
result,  {
                "id": 29,
                "title": "Lorem", 
                "children": [
                    {
                        "id": 32,
                        "title": "Lorem", 
                        "children": []
                    },
                    {
                        "id": 30,
                        "title": "Lorem", 
                        "children": []
                    }
                ],
           },

но результат такой, и не понятно почему
5e999ec2c2c13812670391.jpeg
а как сделать так чтобы он пустые ответы не отдавал? что я не так делаю?
  • Вопрос задан
  • 74 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
SimBioT19
@SimBioT19
{{ user.about }}
Заменить
funtion test1(arr)
на
funtion test1(arr) {
       return arr.reduce((res, item) => {
          if (item.id === objID) {
            res.push(item);
          } else {
          res.push(...test1(item.children));
          }
           return res;
        }, []);       
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы