JavaScript - Пытаетесь выяснить, почему моя средняя сумма не работает? - PullRequest
0 голосов
/ 17 апреля 2020

Попытка выяснить, почему мой блок кода не работает для вычисления среднего значения моего массива. Надеясь на то, что набор глаз sh может сказать мне, почему он не выполняет математику. Могу ли я также просто добавить, что «метка» - это массив, в котором нет целых чисел, а числа хранятся в консоли, а не в массиве, который он сам. Я пытаюсь заставить его работать через пользовательский ввод, когда пользователь вводит отметку в поле ввода и принимает значения, хранящиеся в консоли.

function getTotal() {
  let total = 0;
  let count = 0;
  let i = 0;


  for (let i = 0; i < mark.length; i++) {
    total += mark.length[i];
  }
  if (mark[i] !== undefined) {
    //legit value//
    count++;
    total += mark[i];
  }
  let avg = total / count;
  console.log(avg)

}

document.getElementById("result").innerHTML = " The Average is " + total;
document.getElementById("Average").addEventListener("click", getTotal);

Ответы [ 3 ]

0 голосов
/ 17 апреля 2020

Вот рабочий фрагмент

function getTotal(mark) {
  let total = 0;
  let count = 0;
  for (let i = 0; i < mark.length; i++) {
    total += mark[i];
    count++;
  }

  let avg = total / count;
  console.log(avg)

  document.getElementById("result").innerHTML = " The Average is " + avg;
}

document.getElementById("Average").addEventListener("click", () => {
  getTotal([90, 96, 100, 98])
});
<div id="result"></div>
<button type="button" id="Average">Get Total</button>
0 голосов
/ 17 апреля 2020

mark.length [i], вероятно, должно быть mark [i], также оператор if находится за пределами вашего значения l oop, поэтому он всегда проверяет только последний индекс.

Обычно, когда у вас есть Метод "получить" вы должны вернуть что-то. Также не уверен, откуда берется отметка, поэтому я сделал этот фрагмент ниже, чтобы помочь вам.

Также "document.getElementById (" result "). Inner HTML =" Среднее значение "+ total;" должно быть внутри функции.

let mark = [1,2,3,4,5]

function getTotal() {
  let items = mark.filter(n => n !== undefined)
  let total = items.reduce((sum, n) => sum + n, 0)
  let average = total / items.length
  document.getElementById("result").innerHTML = " The Average is " + average;
}

document.getElementById("Average").addEventListener("click", getTotal);
<buttton id="Average">Get Average</button>
<div id="result"></div>
0 голосов
/ 17 апреля 2020

Суммируйте числа в массиве, а затем разделите на длину массива. Если длина массива равна 0, вернуть NaN (или выдать ошибку):

function getAverage(arr) {
  if (!arr.length) return NaN; // handler empty array case
  
  let total = 0;

  for (let i = 0; i < arr.length; i++) {
    total += arr[i];
  }
    
  return total / arr.length;
}

console.log(getAverage([2, 2, 2]));
console.log(getAverage([10, 20, 33]));
console.log(getAverage([]));

Если вы хотите использовать метод в своем коде, создайте прослушиватель событий:

document.getElementById("Average").addEventListener("click", function() {
  const average = getAverage(mark);
  document.getElementById("result").innerHTML = " The Average is " + average ;
});
...