@RomanChasovitin
Front-End developer

Как сравнить 2 массива и на их основе сделать новый массив из элементов, которые есть в обоих массивах?

Добрый день всем. Возник такой вопрос: Есть 2 массива, массив городов( объекты ) и массив id этих городов. Id каждого города есть соответственно еще и в объектах. Сейчас, чтобы сравнить 2 этих массива и записать в новый те объекты, id которых есть в первом массиве использую вот такую конструкцию:
this.defaultCitiesIds.forEach((def) => {
      this.allCities.forEach((city) => {
        if (def === city.id) {
          city.check = false;
          this.visibleCities.push(city);
        }
      });
    });

Но думаю, что можно этот код улучшить. Может подскажет кто, как написать это более очевидным способом?
  • Вопрос задан
  • 642 просмотра
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
this.visibleCities = this.allCities.filter(city => this.defaultCitiesIds.includes(city.id))
  .map(city => ({ ...city, check: false }));


this.visibleCities = this.allCities.reduce((result, city) => {
  if (this.defaultCitiesIds.includes(city.id)) {
    city.check = false;
    result.push(city);
  }
  return result;
}, []);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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