Задать вопрос
@Comnox

Как отфильтровать массив объектов по элементам другого массива?

Столкнулся с такой проблемой, что не могу понять как можно отфильтровать массив

[{
  city: 'Первый';
  weather: {
    blizzard: false;
    cloudy: true;
    metorite: true;
  };
},
{
  city: 'Второй';
  weather: {
    blizzard: true;
    cloudy: true;
    metorite: true;
  };
},
{
  city: 'Третий';
  weather: {
    blizzard: true;
    cloudy: false;
    metorite: false;
  };
}]

по второму массиву: ['blizzard', 'cloudy'].

Пытался через filter, но получается только отфильтровать по первому элементу второго массива и все, непонятно как провести вторую итерацию, в итоге пытаюсь получить массив, состоящий из элементов первого массива, у которых 'blizzard' и 'cloudy' равны true, как в данном случае:

[{
  city: 'Второй';
  weather: {
    blizzard: true;
    cloudy: true;
    metorite: true;
  };
}]
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
WblCHA
@WblCHA
data.filter(v => filterKeys.every(k => v.weather[k]));

spoiler
const data = [{
      city: 'Первый',
      weather: {
        blizzard: false,
        cloudy: true,
        metorite: true,
      }
    },
    {
      city: 'Второй',
      weather: {
        blizzard: true,
        cloudy: true,
        metorite: true,
      }
    },
    {
      city: 'Третий',
      weather: {
        blizzard: true,
        cloudy: false,
        metorite: false,
      }
    }
  ];
  const filterKeys = ['blizzard',  'cloudy'];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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