reduce()와 reduceRight()
- 반목문 처럼 두 메서드들도 유사한 작업을 수행 해준다. 그런데 사용법이 조금 복잡하다. reduce와 reduceRight는 배열을 기반으로 값 하나를 도출할 때 사용한다.
arr.reduce((accumulator, item, index, array)[, initial]);
- accumulator – 이전 함수 호출의 결과. initial은 함수 최초 호출 시 사용되는 초깃값을 나타냄(옵션)
- item – 현재 배열 요소
- index – 요소의 위치
- array – 배열
첫 번째 인수는 앞서 호출했던 함수들의 결과가 누적되어 저장되는 '누산기(accumulator)'라고 생각하면 된다. 마지막 함수까지 호출되면 이 값은 reduce의 반환 값이 된다.
예)
let arr = [1, 2, 3, 4, 5];
arr.reduce((a, b) => a + b); // 15
arr.reduce((a, b) => a + b, 0); // 15
위의 2개의 차이는 표로 보면~
((a, b) => a + b); | result | ((a, b) => a + b, 0); | result | |
첫 번째 호출 | 1 + 2 | 3 | 0 + 1 | 1 |
두 번째 호출 | 3 + 3 | 6 | 1 + 2 | 3 |
세 번째 호출 | 6 + 4 | 10 | 3 + 3 | 6 |
네 번째 호출 | 10 + 5 | 15 | 6 + 4 | 10 |
다섯번째 호출 | 10 + 5 | 15 |
초기 값을 넣으면 초기 값이 a로 들어가고 없으면 배열의 첫 요소가 들어가게 된다.
하지만 이렇게 초깃값 없이 reduce를 사용할 땐 배열이 비어있는 상태면 reduce 호출 시 에러가 발생하기 때문이다.
reduceRight()는 reduce와 동일한 기능을 하지만 배열의 오른쪽부터 연산을 수행한다는 점이 다른 메서드이다.
Array.isArray()
- 배열이면 true 아니면 false를 반환한다.
Array.isArray(obj)
- 자바스크립트에서 배열은 독립된 자료형으로 취급되지 않고 객체형에 속함. 따라서 typeof로는 일반 객체와 배열을 구분할 수가 없죠.
typeof {}; // object
typeof []; // object
Array.isArray({}); // false
Array.isArray([]); // true
배열 메서드와 ‘thisArg’
- 이 내용은 직접 공부한 사이트에서 보는 것을 추천합니다!! 링크를 타고 들어가면 볼 수 잇습니다.
공부한 곳!! 모던 JavaScript 튜터리얼
'JS' 카테고리의 다른 글
21-2 맵(Map) 2 (1) | 2022.12.15 |
---|---|
21-1 JS 맵(Map) 1 (0) | 2022.12.14 |
20-3 배열과 메서드 3 (map, sort, reverse, split, join) (0) | 2022.12.12 |
20-2 배열과 메서드 2 (forEach, indexOF, lastIndexOf, includes, find, findIndex, filter) (0) | 2022.12.08 |
20-1 배열과 메서드 1 (splice, slice, concat) (0) | 2022.12.01 |