JS

20-4 배열과 메서드 4 (reduce, rediceRight, Array.isArray, 'thisArg')

와라리요 2022. 12. 13. 14:06

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 튜터리얼

바로가기!!