Как создать массив объектов на основе другого массива объектов, оставив там уникальные объекты по id?

const defaultCass = [
  {id: 15006, name: 'test'},
  {id: 15007, name: 'test'},
  {id: 15012, name: 'test'},
]

const allCass = [
  {id: 15006, name: 'test'},
  {id: 15007, name: 'test'},
  {id: 15008, name: 'test'},
  {id: 15009, name: 'test'},
  {id: 15010, name: 'test'},
  {id: 15011, name: 'test'},
  {id: 15012, name: 'test'},
]

Надо получить

const result = [
  {id: 15008, name: 'test'},
  {id: 15009, name: 'test'},
  {id: 15010, name: 'test'},
  {id: 15011, name: 'test'}
]

Массивы более чем по 1500 объектов, желательно оптимальный вариант по производительности.
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
allCass.filter(function(n) {
  return !this.has(n.id);
}, new Set(defaultCass.map(n => n.id)))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Составить массив id, которые нужно исключить
const excludeIds = defaultCass.map(item => item.id);


Затем отфильтровать, оставив только те, чей id отсутствует в excludeIds
const result = allCass.filter(item => !excludeIds.includes(item.id));
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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