@timofeus91
Junior Frontend Developer

Как отсортировать два массива объектов в React?

Доброго времени суток! Не могу решить одну задачу. Есть два массива объектов. Один это отфильтрованный список фильмов со стороннего апи. Второй это отфильтрованный список с локального апи. Объекты по своему составу слегка отличаются. Объекты из локального апи создавались на основе объектов со стороннего . Необходимо оба массива отсортировать так чтобы в итоговый массив в 1 очередь добавился объект из локального массива объектов. У объектов есть следующие значения , по которым можно их сверить - это nameRU , nameEN , movieId у локальных , которое идентично id у фильмов со стороннего апи . Никак не могу понять как эту задачу решить. Буду благодарен любому совету. Ниже код этой функции из React

//обработчик для поиска фильмов
    function handleSearchFilm(data) {

      const allMovies = JSON.parse(localStorage.getItem('movies'));
      const localMovies = JSON.parse(localStorage.getItem('saved-movies'));
      
      //фильтр по локальным фильмам
      const localSearch = localMovies.filter(item => ((item.nameRU != null && 
      item.nameRU.toLowerCase().includes(data.toLowerCase())) || (item.nameEN != null && 
      item.nameEN.toLowerCase().includes(data.toLowerCase()))))
     
      //фильтр по всем фильмам 
      const allSearch =  allMovies.filter(item => ((item.nameRU != null && 
      item.nameRU.toLowerCase().includes(data.toLowerCase())) || (item.nameEN != null && 
      item.nameEN.toLowerCase().includes(data.toLowerCase()))))

setResultSearchFilm('Сюда необходимо добавить итог');
}
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
WblCHA
@WblCHA
const all = [{id:0}, {id:1}, {id:2}];
  const local = [{movieId:1}];
  
  const result = all.map((am) => {
    const lm = local.find((m) => m.movieId === am.id)
    return lm ?? am;
  });

а можешь, пожалуйста, уточнить насчет возвращаемого значения return lm ?? am;

https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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