@Mr_Epic
Web программист

Как удалить лишние элементы из древа, оставив вложенные?

Есть вот такие входящие данные:
[
    {name: 'tree1_1', del: false, list: [
        {name: 'tree2_1', del: true, list: [
            {name: 'tree_3_1', del: false},
            {name: 'tree_3_2', del: true, list: [
                {name: 'tree_4_1', del: false, list: [
                    {name: 'tree_5_1', del: false}
                ]}
            ]},
        ]},
        {name: 'tree2_2',del: false},
    ]},
    {name: 'tree1_2',del: true},
];

Из них нужно удалить элементы с del=true, но оставить вложенные в них элементы с del=false
И составить массив оставшихся путей, вот вывод для примера кода:
['tree1_1','tree_3_1'],
['tree1_1','tree_4_1','tree_5_1'],

Всю голову себе уже сломал, не как не могу реализовать, помогите пожалуйста.
Использование lodash приветствуется.
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
var result = data.reduce(foo, [])

function foo(acc, item){
  if (!item.del) {
    acc.push(item.name)
  }
  if (item.list) {
    item.list.reduce(foo, acc)
  }
  return acc
}
https://jsfiddle.net/3LzexL79/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы