Получить массив дубликатов

Есть некоторый массив объектов. Необходимо получить новый массив состоящий только из дубликатов массива-исходника по конкретному свойству объекта.

Пример

Массив:

[{car: 'volga'},
 {car: 'lada'},
 {car: 'volga'},
 {car: 'volga'}]

Стало:

[{car: 'volga'},
 {car: 'volga'},
 {car: 'volga'}]

Сейчас делаю так (необходимо найти дубли по свойству account), но если объектов скажем 100к, то весь этот процесс выполняется довольно долго, вероятно есть решения лучше и быстрее. Прошу подсказать) Спасибо!

    const items = [{
      oid: 1,
      account: 'price003',
      category: 'FACT',
    },
    {
      oid: 2,
      account: 'price004',
      category: 'FACT',
    },
    {
      oid: 3,
      account: 'price003',
      category: 'FACT',
    },
    {
      oid: 4,
      account: 'price004',
      category: 'FACT',
    },
    {
      oid: 5,
      account: 'price04',
      category: 'FACT',
    }]
    
    let nonUniqItems = []
    
    for (let i of items) {
        for (let k of items) {
            if (i.account == k.account && i.oid !== k.oid) {
                if (!nonUniqItems.find(item => item.oid == i.oid)) nonUniqItems.push(i)
            }
        }
    }

console.log(nonUniqItems)

Ответы (1 шт):

Автор решения: OPTIMUS PRIME

Цикл for...of сам по себе медленнее какого-нибудь forEach. Если нужна скорость, в первую очередь стоит избавиться от него.

const items = [
  { oid: 1, account: 'price003', category: 'FACT' },
  { oid: 2, account: 'price004', category: 'FACT' },
  { oid: 3, account: 'price003', category: 'FACT' },
  { oid: 4, account: 'price004', category: 'FACT' },
  { oid: 5, account: 'price04', category: 'FACT' }
];

let accs = items.map(item => item.account);
// Отдельно собрать все значения .account
// ['price003', 'price004', ...'price04'];

let nonUniqItems = items.filter((item, i) => {
  return accs.indexOf(item.account) != i || accs.lastIndexOf(item.account) != i;
  // Если и слева, и справа, индекс совпадает с текущим, значит он один единственный.
});

console.log(nonUniqItems);

→ Ссылка