2016-07-06 147 views
0

这是我的代码;将forEach循环中的每个数组添加到一起javascript?

var data = [[40, 20, 60], [20, 30, 10], [50, 75, 40]]; 
 
var averageData = []; 
 
data.forEach(function(entries) { 
 
    entries.reduce(function(a, b) { 
 
     return a + b[1]; 
 
    }, 0); 
 
    console.log(entries); 
 
});

我想能够从每个阵列中添加数字加在一起。

但我不知道我怎样才能从forEach循环中得到每个数字加在一起?我想输出[120, 60, 165]

数据在嵌套数组中是很重要的,其目的是尝试用上面的输出将它从嵌套数组中移出到单行上。

希望有人能提供一些建议!

感谢

回答

10

使用Array#map代替

注意b[1]拥有什么(undefined)和entries.reduce回报reduced值,要么返回它的保持它在variable

var data = [ 
 
    [40, 20, 60], 
 
    [20, 30, 10], 
 
    [50, 75, 40] 
 
]; 
 
var averageData = data.map(function(entries) { 
 
    return entries.reduce(function(a, b) { 
 
    return a + b; 
 
    }, 0); 
 
}); 
 

 
console.log(averageData)

+1

** ES6:**'data.map(ARR => arr.reduce((A,B)=> A + B,0)) ' – Tushar

0

reduce()将最终返回您想要的金额。如下所示。

var data = [[40, 20, 60], [20, 30, 10], [50, 75, 40]]; 
 
var averageData = [] 
 
data.forEach(function(entries) { 
 

 
    var sum = entries.reduce(function(a, b) { 
 
     return a + b; 
 
    }, 0) 
 
    console.log(sum) 
 

 
})

0

如果你的价值观是安全的(这意味着你知道哪里有来自),你可以用eval迅速值相加。

var data = [[40, 20, 60], [20, 30, 10], [50, 75, 40]]; 
var totals = []; 

data.forEach(function(a, i) { 
    totals.push(eval(a.join('+'))); 
}); 

console.log(totals); 

不是最有效的方式,但它的工作原理

相关问题