Есть объект с вложениями, нужно отфильтровать его ветки по нужному значению в листе.
Дано:
let data = '[{"caption":"Настройки","commands":[{"caption":"Основные","commands":[{"caption":"Цены"},{"caption":"Типы цен"},{"caption":"Первичные документы"},{"caption":"Настройка отображения ТМЦ в первичных документах"},{"caption":"Настройка первичных документов"}]},{"caption":"Общие настройки","commands":[{"caption":"Глобальные настройки"},{"caption":"Типы процессов"},{"caption":"Тип процесса (функция)"},{"caption":"Нумераторы"},{"caption":"Тип нумератора"},{"caption":"Нумератор"},{"caption":"Календарь"},{"caption":"Тип календаря"},{"caption":"Рабочий календарь"},{"caption":"Сервисы"},{"caption":"Заполнение пустых кодов"},{"caption":"Заполнить RTClass"}]}]}]';
Ожидается
let dataRES = '[{"caption":"Настройки","commands":[{"caption":"Основные","commands":[{"caption":"Первичные документы"}]}]}]';
То, что набросал, но почему-то не получается
let data = '[{"caption":"Настройки","commands":[{"caption":"Основные","commands":[{"caption":"Цены"},{"caption":"Типы цен"},{"caption":"Первичные документы"},{"caption":"Настройка отображения ТМЦ в первичных документах"},{"caption":"Настройка первичных документов"}]},{"caption":"Общие настройки","commands":[{"caption":"Глобальные настройки"},{"caption":"Типы процессов"},{"caption":"Тип процесса (функция)"},{"caption":"Нумераторы"},{"caption":"Тип нумератора"},{"caption":"Нумератор"},{"caption":"Календарь"},{"caption":"Тип календаря"},{"caption":"Рабочий календарь"},{"caption":"Сервисы"},{"caption":"Заполнение пустых кодов"},{"caption":"Заполнить RTClass"}]}]}]';
function f(data, searchValue) {
return data.filter((item) => {
if (item.commands) {
let res = f(item.commands, searchValue);
if (res.length > 0) {
return res
}
} else {
if (item.caption.toLowerCase() === searchValue.toLowerCase()) {
return item.caption;
}
}
})
}
let dd = JSON.parse(data);
console.log('dd', dd);
let newArr = f(dd, 'Первичные документы');
console.log('>>>newArr', newArr);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста, нужно сделать слайдер на сайт как на картинкеПри клике на стрелку или пагинацию блок должен меняться
Есть некий скрипт, который должен получить из запроса POST параметры и записать их в таблицу Google SheetВот код скрипта: