There is an object with attachments, you need to filter its branches by the desired value in the sheet.
Given:
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"}]}]}]'; Expected
let dataRES = '[{"caption":"Настройки","commands":[{"caption":"Основные","commands":[{"caption":"Первичные документы"}]}]}]'; That sketched, but for some reason does not work
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);
filterDoes not change the collection, it only filters it, without displaying elements that are not suitable by condition - Grundy