@ByJumping

Как отфильтровать объект по заданным параметрам?

Привет. Подскажите как написать фильтр для вот таких данных -

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),- массив айдишников
    };
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы