Получение режима из массива в Javascript - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь получить режим в Javascript, однако, я получаю режим только тогда, когда есть два разных числа, если есть только один ответ, который говорит, что нет режима

          function mode() {
          var occurances = {};
          var curNumber;
          var maxNumber = input_array[0];

          for (let i = 0; i < input_array.length; i++) {
            curNumber = input_array[i];

            if (occurances[curNumber] !== undefined) {
              occurances[curNumber]++;
            }else {
              occurances[curNumber] = 1;
            }
            if (occurances[curNumber] > occurances[maxNumber]) {
              maxNumber = curNumber
            }
            if (occurances[maxNumber] > input_array.length / 2) {
              document.getElementById('out7').innerHTML = maxNumber;
            }else {
              document.getElementById('out7').innerHTML = "No Mode";
            }

          }
        }

1 Ответ

0 голосов
/ 26 мая 2019

Согласно другому посту , попробуйте что-то вроде ниже:

var mode = function getMode(arr) {
    var numMapping = {};
    var greatestFreq = 0;
    var mode;
    arr.forEach(function findMode(number) {
        numMapping[number] = (numMapping[number] || 0) + 1;

        if (greatestFreq < numMapping[number]) {
            greatestFreq = numMapping[number];
            mode = number;
        }
    });
    return +mode;
}

document.getElementById('out7').innerHTML = getMode(input_array);
...