Есть объект с вложениями, нужно отфильтровать его ветки по нужному значению в листе.
Дано:
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);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости