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));
Для решения задачи подсчёта не нужно вложенных циклов.
Пройти по каждому элементу достаточно всего один раз.
И внести в "словарь": 1, если ещё не было такого, или увеличить на 1, если уже было.
исправленный ваш кодlet arr = [1,3,3,4,5,5,5];
function count(arr){
const map = new Map();
const len = arr.length;
for (let i = 0; i < len; i++) {
const value = arr[i];
if (!map.get(value)) map.set(value, 0); // создать счетчик
map.set(value, map.get(value) + 1); // увеличить на 1
}
return map;
}
console.log(count(arr));
/*
Map(4)
size: 4
<entries>
0: 1 → 1
1: 3 → 2
2: 4 → 1
3: 5 → 3
*/