@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;
  };
}]
  • Вопрос задан
  • 56 просмотров
Решения вопроса 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'];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы