2016-07-06 211 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); 

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

相關問題