reduce()
메서드는 배열의 값들을 하나의 새로운 값으로 합치는 메서드로, 다음과 같이 구성된다.
배열.reduce((누적값, 현재값) -> {
return 새로운 누적값;
}, 초깃값);
만약 초깃값이 지정되지 않았습면 배열의 첫번째 요소가 초깃값이된다.
[1,2,3].reduce((x,y)=>{
return x+y;
}, 0);
x(누적값) | y(현재값) | x + y(반환값) |
---|---|---|
0 | 1 | 1 |
1 | 2 | 3 |
3 | 3 | 6 |
위처럼 마지막으로 6이 반환되어 reduce의 결과값이 됩니다.
초깃값 0이 첫 번째 누적값(x)가 되고, 배열의 첫 번째 요소가 현재값(y)가 된다. x+y를 한 반환값은 다음 번 누적값이 된다. 이렇게 마지막 요소까지 함수가 반복해서 실행된다. (반복문과 유사하다)
reduce()
로 단순한 사칙연산을 반복할 수도 있지만 배열을 객체로 바꿔 줄 수도 있다.
['a','b','c','d'].redcue((x, y, i) => {x[i] = y; return x},{})
//결과
// {0: 'a', 1: 'b', 2: 'c'}
x(누적값) | y(현재값) | i(index) |
---|---|---|
x : {} | y : 'a' | i : 0 |
x : {0:'a'} | y : 'b' | i : 1 |
x : {0 : 'a', 1 : 'b'} | y : 'c' | i : 2 |
x : {0 : 'a', 1 : 'b', 2 : 'c'} |
위와같이 배열 -> 객체로 변환 해 줄 수도 있다.