Привет. Подскажите как написать фильтр для вот таких данных -
const data = {
child: [
{
child: [
{
data: [
{ name: 'Дети', value: 23 },
{ name: 'Взрослые', value: 5 },
{ name: 'Семьи', value: 7 },
],
district_id: '234-43-11f-89-rgt',
district_name: 'Стародубский',
},
],
data: [
{ name: 'Дети', value: 323 },
{ name: 'Взрослые', value: 35 },
{ name: 'Семьи', value: 67 },
],
district_id: '234-f-89-rgt',
district_name: 'Брянская область',
},
{
child: [
{
data: [
{ name: 'Дети', value: 23 },
{ name: 'Взрослые', value: 5 },
{ name: 'Семьи', value: 7 },
],
district_id: '234-43-11f-89-rgt',
district_name: 'Москва',
},
],
data: [
{ name: 'Дети', value: 323 },
{ name: 'Взрослые', value: 35 },
{ name: 'Семьи', value: 67 },
],
district_id: '234-f-89-rgt-7',
district_name: 'Московская область',
},
],
data: [
{ name: 'Дети', value: 2323 },
{ name: 'Взрослые', value: 435 },
{ name: 'Семьи', value: 567 },
],
id: '234-fgt',
name: 'Центральный фед округ',
};
это для понимания написал, то есть есть 3, 4 уровня вложенности - Округ, район, область, город
Изначально прилетают абсолютно все округа, города и т.д.
Мне нужна фильтрация по параметрам - например, выбрать две области, Московскую и Ивановскую чтоб осталось только 2 эти области со всеми городамии внутри. Дальше фильтр если Выбрано 2 области Московская и Ивановская и еще по несколько городов внутри. То есть было -
Московская область - (все районы) - (все города)
Ивановская область - (все районы) - (все города)
А стало Московская область - Москва, Люберцы, поселение Стародубское - город Москва
Ивановская область - Иваново, Вичуга
разумеется изначальная вложенность огромна, у Московской области только около 200 районов
Так же нужна фильтрация, что бы из подборки удалить все данные где
data: [
{ name: 'Дети', value: 0 },
{ name: 'Взрослые', value: 0 },
{ name: 'Семьи', value: 0 },
],
То есть когда все значения по нулям.
на данный момент сделал только так -
let newData = Object.entries(data)
.map((entity) => [entity[0], entity[1].filter((currentLocation) => formObject[entity[0]]?.includes(currentLocation.id))]);
data - все данные
formObject - объект с фильтром
выглядит примерно так -
const formObject = {
federalSeries: computed(() => props.formSettings?.filter?.federals), - массив айдишников
regionalSeries: computed(() => props.formSettings?.filter?.regions),- массив айдишников
municipalSeries: computed(() => props.formSettings?.filter?.municipalities),- массив айдишников
citySeries: computed(() => props.formSettings?.filter?.cities),- массив айдишников
};