суммирование чисел, хранящихся в массиве в JavaScript - PullRequest
1 голос
/ 28 февраля 2012

Я хочу суммировать список чисел, хранящихся в объекте JavaScript. Объект создается и обновляется с использованием этого кода:

var myscore = $('input[name="Points1"]').val();
scorelist = JSON.parse(localStorage.getItem(playerName + 'scorelist') || '[]');
        scorelist.push(myscore);
        localStorage.setItem(playerName + 'scorelist', JSON.stringify(scorelist));
        $('div.scorecolumn', column).html("Score: <br>" + scorelist.join('<br>') + "<br>");

Обычно я беру все, что находится в столбце в данный момент времени, анализирую его, добавляю myscore, приводю в порядок, соединяю каждый элемент с <br> и записываю список в колонку результатов. Список номеров сохраняется как объект. Моя цель - суммировать все числа в объекте в любой момент времени.

Этот скрипт находится внутри функции, которая передает множество параметров, поэтому некоторые переменные здесь выглядят неопределенными.

Любая помощь будет принята с благодарностью! Спасибо

UPDATE:

var nicTotalScore = nicScoreList.reduce(function(score, total) {
        return total + score;   
    }, 0);
    console.log(nicTotalScore); //12120
    console.log(nicScoreList); //["12", "12"]

UPDATE: Если поле оценки оставлено пустым при отправке, пустая строка "" вместо оценки. это регистрируется как 0, когда метод Reduce проходит через массив. Это не влияет на общее количество, но, скажем, например, я хотел тогда найти средний балл, он отбрасывает его. есть идеи? спасибо

1 Ответ

3 голосов
/ 28 февраля 2012

Если вы push() до scorelist, я бы хотел сказать, что это, вероятно, Array.

Вы можете использовать reduce().

var total = scorelist.reduce(function(total, score) {
    return total + +score;
}, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...