2017-02-21 15 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

需要初始化sum0,否則值爲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)