Как найти наибольшее значение в js?

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

У меня эти переменные в начале установлены на ноль, и их баллы будут увеличиваться при вводе пользователем.

var earthScore = 0;
var venusScore = 0;

всякий раз, когда нажимается кнопка, запускается функция

q1a4.addEventListener ("click", earth);
q1a5.addEventListener ("click", venus);

эта функция добавит единицу к исходным переменным

function earth () {
    earthScore += 1;
    questionCount += 1;
}
function venus () {
    venusScore += 1;
    questionCount += 1;
}

теперь я хочу узнать переменную, которая имеет наибольшее количество кликов, и дать ответ пользователю, например; если переменная земли имеет больший балл, чем переменная венера, то я изменю результат на result.innerHTML = 'you are earth', но я не знаю, как найти переменную с наибольшим баллом

на самом деле это мой первый проект с использованием js, поэтому у меня не так много идей, и все, что я пытался найти, кажется неправильным, поэтому я был бы очень признателен, если бы кто-нибудь мог дать мне ответ для моей программы.

🤔 А знаете ли вы, что...
С помощью JavaScript можно валидировать данные на стороне клиента, что улучшает пользовательский опыт.


69
2

Ответы:

Впоследствии вы можете поместить результаты в массив с помощью:

let tmpArray = [];
tmpArray.push(earth);
tmpArray.push(venus);
tmpArray.sort(function(a, b){return b - a});

Теперь у вас есть самое высокое значение в:

tmpArray[0];

См.: https://www.w3schools.com/js/js_array_sort.asp


Решено

Сначала посмотрите на решение:

var earthScore = 0;
var venusScore = 0;
var questionCount = 0;

function handleResult() {
    if (earthScore !== venusScore) result.innerText = "you are " + ((earthScore >= venusScore) ? "earth" : "venus");
    else result.innerText = "";
}

function earth () { earthScore += 1; questionCount += 1; handleResult(); }
function venus () { venusScore += 1; questionCount += 1; handleResult(); }

let q1a4 = document.getElementById("q1a4");
let q1a5 = document.getElementById("q1a5");

q1a4.addEventListener ("click", earth); q1a5.addEventListener ("click", venus);

let result = document.getElementById("result");
<input type = "button" id = "q1a4" value = "EARTH">
<input type = "button" id = "q1a5" value = "VENUS">
<div id = "result"></div>

Объяснение:

  • мы инициализируем оценки с 0
  • мы определяем handleResult, который обновит результат с текущим победителем (или ничего, если у нас ничья)
  • у нас есть earth и venus, как вы изначально определили, за исключением вызова handleResult также для обработки результата
  • мы получаем кнопки
  • мы указываем click события для кнопок, как вы указали
  • мы также получаем элемент результата, чтобы мы могли отобразить результат

РЕДАКТИРОВАТЬ

Давайте посмотрим на пример с 8 элементами, что случайно соответствует количеству планет в Солнечной системе (бедный Плутон)

function handleResult() {
    let tie = false;
    let maxSoFar = 0;
    let plnt = "";
    for (let planet of Object.keys(counts)) {
        if (counts[planet] > maxSoFar) {
            maxSoFar = counts[planet];
            tie = false;
            plnt = planet;
        } else if (counts[planet] === maxSoFar) {
            tie = true;
        }
    }
    if (tie) {
        result.innerText = ""; //a tie
    } else {
        result.innerText = "You are " + plnt.toLowerCase();
    }
}

let result = document.getElementById("result");
let planets = document.getElementsByClassName("planet");
let counts = {};
for (let planet of planets) {
    counts[planet.value] = 0;
    planet.addEventListener("click", function() {
        counts[this.value]++;
        handleResult();
    });
}
<input type = "button" class = "planet" value = "MERCURY">
<input type = "button" class = "planet" value = "VENUS">
<input type = "button" class = "planet" value = "EARTH">
<input type = "button" class = "planet" value = "MARS">
<input type = "button" class = "planet" value = "JUPITER">
<input type = "button" class = "planet" value = "SATURN">
<input type = "button" class = "planet" value = "URANUS">
<input type = "button" class = "planet" value = "NEPTUNUS">
<div id = "result"></div>

Объяснение:

  • handleResult теперь извлекает ключи объекта counts (которые являются именами планет), повторяет их и сравнивает их количество с максимальным на данный момент; если больше, то это точно не ничья, а новый максимум и эти значения сохраняются; в противном случае, если счет текущей планеты равен самому высокому счету на данный момент, то у нас ничья (пока); наконец, если текущий счетчик меньше максимального на данный момент, то мы ничего не делаем и позволяем циклу пройти через элемент
  • мы получаем предмет result точно так же, как и раньше
  • получаем планеты по имени класса, ибо было бы неудобно получать их отдельно по id, написав 8 строк вместо одной
  • мы инициализируем counts как пустой объект
  • и повторяет planets
  • инициализация количества каждой планеты как члена данных counts, имеющего значение 0, например, counts["MERCURY"] в начале равно 0
  • мы создаем событие для каждой планеты, которое будет происходить при нажатии кнопки планеты, увеличивая количество рассматриваемой планеты и вызывая handleResult