G
G
gorwhoami2020-01-23 16:01:02
JavaScript
gorwhoami, 2020-01-23 16:01:02

How to count the number of repeating elements in an array?

let arr = [1,3,3,4,5,5,5];
function count(arr){
  let cnt = 1;
  let map = new Map();
  for(let i = 0; i< arr.length; i++){
    for(let j = 0; j< arr.length; j++){
      if(arr[i] == arr[j]){
          map.set(arr[i],cnt++);
      }
    }
  } return map;
}
console.log(count(arr)); //  map должен быть таким {1 => 1, 3 => 2, 4 => 1, 5 => 3} ,
// но выдает  {1 => 1, 3 => 5, 4 => 6, 5 => 15}
// Как реализовать такое? Если можно объясните что именно делать с этим кодом(и укажите ошибки в 
// коде) чтобы он стал работать корректно.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Alex, 2020-01-23
@gorwhoami

function count(arr){
  const map = new Map();
  arr.forEach(i => map.set(i, (map.get(i) || 0) + 1))
  return map;
}

I
iddqda, 2020-01-23
@iddqda

I do something like this:

let arr = [1,3,3,4,5,5,5];
obj = new Object();
arr.forEach((el)=>(obj.hasOwnProperty(el)) ? obj[el]++ : obj[el] = 1);
console.log(obj); // Object { 1: 1, 3: 2, 4: 1, 5: 3 }

well, i.e. I use the property of the object - the uniqueness of the keys

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question