2017-02-21 9 views
1

У меня проблема с получением суммы моего массива. Я использую скрипт Adwords, который работает как javascript. Я могу «распечатать» свой массив, который показывает числа, которые меня интересуют. Например, [23369.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]. Но когда я добавляю их вместе, используя мой цикл for, результаты производят NaN (Not-a-Number). Я действительно не знаю, что делать.Как правильно суммировать массив в JavaScript

var spend = []; 

function main() { 
    var campaignsIterator = AdWordsApp.campaigns().get(); 
    var sum; 

    while(campaignsIterator.hasNext()) { 
    var campaigns = campaignsIterator.next(); 
    var stats = campaigns.getStatsFor("THIS_MONTH"); 
    var costPerAdG = stats.getCost(); 

    spend.push(costPerAdG); 
    } 

    for(var i in spend){ 
    sum += parseInt(spend[i]); 
    } 

    Logger.log(spend); 
} 

ответ

3

Вы должны инициализировать sum с 0, в противном случае значение undefined.

Если вы добавите числовое значение, вы получите NaN - если вы добавите строку, то результатом будет 'undefined' + string.

var sum = 0; 
//  ^^^ 

var a, 
 
    b = 0; 
 

 
a += 1; 
 
b += 1; 
 
console.log(a); // NaN 
 
console.log(b); // 1

+0

Спасибо! Прекрасно работает. – Waltswen

0

Вы можете также определить sumи фактически подвести ваш массив в одной чистой однострочника:

var sum = spend.reduce((a, b) => a + b); 
0

здесь простая функция для получения сумма массива

function sumarr(arr){ 
    return arr.reduce(add, 0); 
} 

arr=[23369.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] 

sumarr(arr)