2017-02-21 17 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)