2016-07-03 4 views
0

정의되지 않습니다. 코드는 함수없이 작동합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?javascript reduce gets undefined

var myArr = [ 1, 2, 3, 4, 5 ]; 
 

 
function getSums(arr) { 
 
    arr.reduce(a => a+1, 0); 
 
} 
 

 
document.write(getSums(myArr));

+0

함수에서 '반환'해야합니다. –

+0

@nenad 이것은 화살표 함수이며 기본적으로 RETURN이 있습니다. –

+2

'getSums'는 화살표 함수가 아닙니다. – JJJ

답변

4

세 가지 문제 : 어큐뮬레이터, 현재 항목 :

  1. reduce를 사용하여, 당신은 (적어도) 처음 인수를 사용합니다. (다른 인수도 있지만 처음 두 개는 가장 자주 사용되는 인수입니다.)

  2. 논리가 a + 1이고 배열에서 값을 함께 추가하지 않으면이 값에 1이 추가됩니다. 그 입장.

  3. 당신은 반환 당신의 getSums 함수에서 reduce에 의해 반환되는 값이 필요합니다.

그래서 :

var myArr = [ 1, 2, 3, 4, 5 ]; 
 

 
function getSums(arr) { 
 
    return arr.reduce((sum, a) => sum + a, 0); 
 
//^^^^^^   ^^^^ ^ ^^^^^^ 
 
} 
 

 
console.log(getSums(myArr));

아니면 간결한 함수 본문 사용하는 경우는 화살표 구문을 사용하여 getSums 정의 할 수 있습니다, 다음 반환 암시 될 것이다 :

var myArr = [ 1, 2, 3, 4, 5 ]; 
 

 
let getSums = arr => arr.reduce((sum, a) => sum + a, 0); 
 

 
console.log(getSums(myArr));

+0

wrapper가 ' t를 제외하고. – ftor

+0

@ LUH3417 :'reduce' ** 콜백은 항상 누산기를 받아들입니다. 이것은 첫 번째 인수입니다. 우리가 '0'을이 특별한 경우의 호출에서 떼어 놓을 수 있다는 것은 사실입니다. 왜냐하면 합계 연산이기 때문입니다. 나는 보통 그것을 갖는 명확성을 선호하지만, 스타일의 것입니다. –