2016-07-06 5 views
0

내 코드는 다음과 같습니다. forEach 루프 내의 각 배열을 함께 추가 자바 스크립트?

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.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

빠르게 값 합계를 평가 사용할 수 있습니다 (에서이 어디서 왔는지 알고 의미).

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); 

하지 가장 효율적인 방법이지만

관련 문제