Как посчитать количество дубликатов каждого элемента массива?

Нужно выводить количество дубликатов каждого элемента массива, сначала сортируем, а затем говорим что если этот элемент равен следующему значит считаем ++

function d(arr) {
  const array = arr.sort((a, b) => a - b)
  let c = 0;
  return array.map((arr, i) => arr == arr[i + 1] ? c++ : 1)
}


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

Автор решения: Vasily

Можно воспользоваться структурами данных Map:

const countDup = dups => {
  const map = new Map()

  for (const dup of dups) {
    map.set(dup, map.get(dup) + 1 || 1)
  }
  return map
}

const result = countDup([1, 2, 3, 1, 7, 10, 3])

console.log(result)
// Map { 1 => 2, 2 => 1, 3 => 2, 7 => 1, 10 => 1 }
// в сниппете map не отображается

console.log(Array.from(result))
// [ [ 1, 2 ], [ 2, 1 ], [ 3, 2 ], [ 7, 1 ], [ 10, 1 ] ]

console.log(Object.fromEntries(result))
// {
//  "1": 2,
//  "2": 1,
//  "3": 2,
//  "7": 1,
//  "10": 1
// }

→ Ссылка