Рубрики
Без рубрики

Получить уникальные объекты из массива

Предположим, у вас есть множество объектов, по крайней мере, с одним общим свойством, которое можно использовать в качестве … Tagged с JavaScript, Array, Object, Map.

Предположим, у вас есть множество объектов, по крайней мере, с одним общим свойством, которое можно использовать в качестве идентификатора.

Эта функция позволит вам создать новый массив с уникальными объектами на основе выбранного свойства:

function getUniqueElementsFromArray(array, uniqueProperty) {
  const result = [];
  // The map will help us keep a record of the objects
  const map = new Map();
  array.forEach((item, i) => {
    if (!map.has(item[uniqueProperty])) {
      // New element, push it into results
      map.set(item[uniqueProperty], true); // you can set any value, we just need it to be in the Map
      // save unique object
      result.push(item);
      }
    });
  return result;
};

Пример: Допустим, у нас есть массив:

const sample = [
  {name: 'a', points: 20, game: 1},
  {name: 'e', points: 5, game: 3},
  {name: 'a', points: 15, game: 3},
  {name: 'i', points: 5, game: 3},
  {name: 'e', points: 50, game: 1},
  {name: 'a', points: 0, game: 5},
  {name: 'o', points: 100, game: 2},
  {name: 'e', points: 20, game: 2},
  {name: 'u', points: 20, game: 1},
  {name: 'i', points: 50, game: 2},
]

Мы можем использовать свойство 'имя' как идентификатор

console.log(getUniqueElementsFromArray(sample, 'name'))

И результат даст:

[
  { name: 'a', points: 20, game: 1 },
  { name: 'e', points: 5, game: 3 },
  { name: 'i', points: 5, game: 3 },
  { name: 'o', points: 100, game: 2 },
  { name: 'u', points: 20, game: 1 }
]

Оригинал: “https://dev.to/tepexic/get-unique-objects-from-an-array-4cog”