Удаление повторяющихся значений в массиве объектов в JavaScript

Чтобы удалить повторяющиеся значения в массиве объектов в JavaScript, вы можете использовать несколько методов. Вот несколько распространенных подходов:

  1. Использование объекта Set. Один из самых простых методов — использование объекта Set, который автоматически удаляет повторяющиеся значения из массива. Однако объект Set работает только с примитивными типами данных, поэтому если у вас есть массив объектов, вам необходимо использовать дополнительный шаг для преобразования объектов в строковое представление. Вот пример:
const array = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
  { id: 1, name: 'John' }, // Duplicate
];
const uniqueArray = Array.from(new Set(array.map(JSON.stringify))).map(JSON.parse);
console.log(uniqueArray);
  1. Использование метода filter(). Другой подход — использовать метод filter()вместе с методом findIndex()для удаления дубликатов на основе определенного свойства объекты. Вот пример:
const array = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
  { id: 1, name: 'John' }, // Duplicate
];
const uniqueArray = array.filter((obj, index, self) => {
  return index === self.findIndex((el) => (
    el.id === obj.id && el.name === obj.name
  ));
});
console.log(uniqueArray);
  1. Использование временного объекта. Вы также можете создать временный объект, чтобы отслеживать уникальные объекты, используя определенное свойство в качестве ключа. Вот пример:
const array = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
  { id: 1, name: 'John' }, // Duplicate
];
const uniqueArray = Object.values(
  array.reduce((acc, obj) => {
    const key = obj.id + '|' + obj.name;
    if (!acc[key]) {
      acc[key] = obj;
    }
    return acc;
  }, {})
);
console.log(uniqueArray);

Это всего лишь несколько методов, которые можно использовать для удаления повторяющихся значений из массива объектов в JavaScript. Не забудьте выбрать метод, который лучше всего подходит для вашего конкретного случая использования.