Код, для решения задачи на JS

Задача:

В автоматически сгенерированном массиве целых чисел, найти число, которое встречается наиболее часто. Если таких чисел несколько, то вывести их все и указать их количество.

Код на JS:

let m;
let arr=new Array();
for(let i=0; i<m; i++){
  arr[i]=Math.round(Math.random()*10);
}
console.log(,m, arr);
let count, max=0, number;
for(let i=0; i<m; i++){
        count=0;
        for(let j=0;j<m;j++){
            if(arr[i] == arr[j]){
                count++;
            }
        }
        if(count > max){
            max = count;
            number = arr[i];
        }

    }
    console.log(number + ": " + max);

Выводится только одно число и его количество, даже если с таким количеством не оно одно. Пытался как-то вывести через for и if, но тогда вообще не выводит.

Попытка:

let m=prompt("Введіть число");
console.log(m);
let arr=new Array();
for(let i=0; i<m; i++){
  arr[i]=Math.round(Math.random()*10);
}
console.log("Введені дані:",m, arr);
let count, max=0, number;
for(let i=0; i<m; i++){
        count=0;
        for(let j=0;j<m;j++){
            if(arr[i] == arr[j]){
                count++;
            }
        }
        if(count > max){
            max = count;
        }
    } 
for(let i=0;I<m; I++){
if(count==max) {
number=arr[I]; 
    console.log(number + ": " + max);
}
}

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

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

Проблема твоего кода в том, что он:

  • не учитывает чувствительность JS к регистру имен (например, i и I это разные идентификаторы)
  • содержит лишние вложенные циклы (вместо того чтобы каждый раз пробегать массив от начала - можно просто посчитать повторы чисел, и отсортировать результат)
  • незакончен (для того чтобы научиться быстрее, всегда старайся выполнять упражнения полностью... если даже кодом возвращается неверный ответ - дописывай задуманный алгоритм до конца, не бросай на полпути).

Решение на современном JavaScript, пошаговое и (надеюсь) более-менее понятное:

const maxNumVal  = 9,
      numbersCnt = 16;     // +prompt('Введите количество чисел') || 0;
if (numbersCnt > 0) {
  const numbers = Array.from({ length: numbersCnt },
    () => Math.floor(Math.random() * 10)
  );
  console.log(`Числа (${numbersCnt}): ${numbers.join(', ')}`);
  const stats = numbers.reduce((rslt, number) => {
    rslt[number] = (rslt[number] || 0) + 1;
    return rslt;
  }, {});
  const sorted     = Object.entries(stats).sort(([, cntA], [, cntB]) => cntB - cntA),
        [, maxCnt] = sorted[0];
        trimToIdx  = sorted.findIndex(([, cnt]) => cnt < maxCnt);
  if (trimToIdx >= 0)
    sorted.length = trimToIdx;
  console.log(
    `Наиболее часто, а именно ${maxCnt} раз(а), встреча`
    + ((sorted.length > 1) ? 'ются эти числа: ' : 'ется одно число ')
    + sorted.map(([number]) => number).join(', ')
  );
}

→ Ссылка
Автор решения: Qwertiy

var a = Array(100 + Math.random() * 9900 | 0).fill().map(() => Math.random() * 1000 | 0)
var c = a.reduce((r, x) => (r[x] = ~~r[x] + 1, r), Object.create(null))
var m = Math.max(...Object.values(c))
var b = Object.entries(c).filter(([x, c]) => c === m).map(([x]) => +x)

console.log(m, b)

→ Ссылка