Как посчитать количество одинаковых элементов в массиве js

Аватар пользователя Вячеслав Межуревский
Вячеслав Межуревский
26 сентября 2022

Для поиска одинаковых элементов в массиве нагляднее всего воспользоваться циклом:

const nums = [1, 2, 1, 4, 5, 1, 7, 8, 1, 10];

let count = 0;

for (let i = 0; i < nums.length; i +=1 ) {
  if (nums[i] === 1) {
    count += 1;
  }
}
// Вывод: 4

Или например, необходимо посчитать сколько раз встречается каждая цифра в исходном массиве, с помощью reduce:

const nums = [1, 2, 7, 4, 5, 2, 7, 8, 1, 10];

const res = nums.reduce((acc, i) => {
  if (acc.hasOwnProperty(i)) {
    acc[i] += 1;
  } else {
    acc[i] = 1;
  }
  return acc;
},{})
// Вывод: { '1': 2, '2': 2, '4': 1, '5': 1, '7': 2, '8': 1, '10': 1 }
3 2
Аватар пользователя Aleksey
Aleksey
05 апреля 2023

Еще один способ. Можно использовать метод sort:

const arr = [1, 5, 0, 3, 5, 8, 9];
const unique = [...new Set(arr)];
const diff = arr.length - unique.length;

В переменной unique мы храним массив уникальных значений, полученный из основного массива arr. Для этого мы воспользовались конструкцией new Set() для создания новой коллекции уникальных значений. С помощью десктруктуризации мы перевели этот объект коллекции к массиву. Затем, с помощью свойства length на обоих массивах мы получили разницу, которая равна количеству элементов в массиве с одинаковыми значениями.

1 1
Познакомьтесь с основами JavaScript бесплатно