14-7. Array 오브젝트(ES5 기준) / 반환 값을 파라미터 값으로 사용
reduce()
구분 | 데이터(값) |
---|---|
data | 반복 대상 |
파라미터 | 첫번째 파라미터: 콜백 함수 두번째 파라미터: 초깃값opt |
반환 | 콜백 함수에서 반환한 값 |
- forEach()처럼 시맨틱 접근
배열 끝까지 콜백함수 호출
- 파라미터 작성 여부에 따라 처리가 다름
reduce() 파라미터 한개만 작성한 경우
콜백 함수만 작성한 경우
- 즉, 파라미터를 하나만 작성
처음 콜백 함수를 호출할 때
- 인덱스 [0]의 값을 prev 값에 설정
- 인덱스 [1]의 값을 current 값에 설정
- 인덱스에 1을 설정
두번째로 콜백 함수를 호출할 때
- 콜백 함수에서 반환된 값을 직전 값에 설정
- 인덱스 [2]의 값을 current 값에 설정
var value = [1, 3, 5, 7];
var fn = function (prev, current, index, array) {
console.log(prev + "," + current);
return prev + current;
}
var result = value.reduce(fn);
console.log("결과:", result);
// 1,3
// 4,5
// 9,7
// 결과: 16
- 4번이 아니라 3번 반복한 것은 처음 시작할 때 index가 1이기 때문입니다.
reduce() 파라미터 두번째까지 작성한 경우
- 두번째 파라미터를 작성한 경우
처음 콜백 함수를 호출할 때
- 두번째 파라미터 값을 prev 값에 설정
- 인덱스 [0]의 값을 current 값에 설정
- 인덱스에 0을 설정
두번째로 콜백 함수를 호출할 때
- 콜백함수에서 반환된 값을 prev 값에 설정
- 인덱스 [1]의 값을 current 값에 설정
var value = [1, 3, 5];
var fn = function (prev, current, index, array) {
console.log(prev + "," + current);
return prev + current;
}
var result = value.reduce(fn, 7);
console.log("반환:", result);
// 7,1
// 8,3
// 11,5
// 반환: 16
- 두번째 파라미터에 초깃값으로 7을 작성
- 처음 콜백 함수를 호출할 때 두번째 파라미터 값 7을 prev에 설정
prev: 7, current: 1, index: 0, 반환값: 8 - 두번째 콜백함수를 호출할 때
prev: 8, current: 3, index: 1, 반환값: 11
reduceRight()
구분 | 데이터(값) |
---|---|
data | 반복 대상 |
파라미터 | 첫번째 파라미터: 콜백 함수 두번째 파라미터: 초깃값opt |
반환 | 콜백 함수에서 반환한 값 |
- reduce()와 처리방법 같음
배열 끝에서 앞으로 하나씩 읽어가면서
콜백 함수에서 반환한 값을 반환
var value = [1, 3, 5, 7]; var fn = function (prev, current, index, array) { console.log(prev + "," + current); return prev + current; } var result = value.reduceRight(fn); console.log("반환:", result); // 7,5 // 12,3 // 15,1 // 반환: 16