Я пытаюсь просмотреть массив и сложить все числа. Я использовал console.log, чтобы показать мне, какие значения использовал скрипт, как показано ниже. Я продолжаю пробовать разные варианты вещей в if()
, но, похоже, ничего не работает должным образом.
var billycount = 0;
var billyTotalScore = billyScoreList.reduce(function(score, total) {
if(score === " ") {
billycount += 1;
}
return +total + +score;
});
console.log(billycount); //0
console.log(billyTotalScore); //30
console.log(billyScoreList); // ["12", " ", "18"]
console.log(billyAverageScore) //10
var billyAverageScore = billyTotalScore/(billyteamlist.length - billycount);
Ответ на billyAverageScore
должен равняться 15 (30/2).
Я пытался if(score === "0")
, который дает мне те же ответы, что и выше, и if (score !== true)
, который дает мне счет 2 и среднее значение 30. Я думаю, что reduce()
рассматривает пустую строку как 0. Я хочу быть в состоянии сосчитать все пустые строки, чтобы я мог сбрасывать их со счетов при нахождении среднего.
Я боролся с этим вечно и чувствую, что мне не хватает одной ключевой концепции. Любая помощь будет отличной! Спасибо!
UPDATE:
Для тех, кто сталкивается с этим, вот код, который я получил, чтобы работать.
var billycount = 0;
var billyTotalScore = billyScoreList.reduce(function(total, score) {
if (score === " " || total === " ") {
billycount++;
}
return +total + +score;
});
var billyAverageScore = billyTotalScore/(billyteamlist.length - billycount);
Когда я просто проверял if (score === " ")
, я забыл, что оценка никогда не будет равна первому члену в массиве. Я просто добавил || total === " "
. единственный раз, когда это сломалось бы, было бы, если бы первый элемент был "", а второй элемент был 0. Я хотел бы billycount ++ для первого элемента, но не для второго. Надо еще подумать.