[javascript] 배열 고차함수 map, filter, reduce
2022. 3. 26. 20:51ㆍStudy/Javascript
고차함수란?
다른 함수를 전달 인자(매개변수)로 받거나, 함수를 결과로 반환하는 함수를 뜻한다.
1. map
기존의 배열을 순회하여 새로운 배열을 만들 때 사용된다.
이 때 기존의 배열은 변경되지 않는다.
let array = [1, 2, 3, 4, 5]
let arrayMap = array.map((item) => {
return item + 1;
});
console.log(arrayMap);
//[2, 3, 4, 5, 6]
console.log(array);
//[1, 2, 3, 4, 5]
❓ forEach와의 차이점은?
map은 콜백 함수를 반복적으로 실행한 결과를 반환하여 새로운 배열을 생성한다.
forEach는 콜백 함수를 반복적으로 실행하지만 값을 반환하지 않아 리턴값을 사용할 수 없다.
2. filter
기존의 배열에서 조건에 해당하는 요소들만 추출하여 새로운 배열을 만든다.
즉, 인자로 주어진 함수의 실행결과가 true인 요소의 값만 추출하여 새로운 배열을 만들어준다.
이 때 기존의 배열은 변경되지 않는다.
let num = [1, 2, 3, 4, 5]
let numFilter = num.filter((item) => {
return item % 2
//2로 나눈 나머지가 true(1)인 경우 추출(0은 false)
});
console.log(num);
//[1, 2, 3, 4, 5]
console.log(numFilter);
//[1, 3, 5]
3. reduce
기존의 배열을 순회하면서 각 요소에 대해 매개변수로 받은 함수를 실행하는데,
이 때 이전의 함수 실행 반환 값을 전달하여 함수를 실행하고 그 결과를 합산하여 반환한다.
이 때 기존의 배열은 변경되지 않는다.
reduce 함수는 인자에 첫번째로 콜백함수, 두 번째로 초기값을 전달 받는다.
그리고 그 콜백함수의 인자에는 accumulator, currentValue, currentIndex, array 네 가지가 들어갈 수 있다. 그러나 모두 사용하지는 않는다.
accumulator: 이전 반환 값. 초기값을 설정했을 경우 그 해당 값
currentValue: 현재 값
currentIndex: 현재 인덱스
array: 원본 배열
let numList = [1, 2, 3, 4, 5];
let numReduce = numList.reduce((previousValue, currentValue) => {
return previousValue + currentValue
}, 0);
console.log(numList)
//[1, 2, 3, 4, 5]
console.log(numReduce)
//15
let numList = [1, 2, 3, 4, 5];
let numReduce = numList.reduce((previousValue, currentValue) => {
return previousValue + currentValue
}, 2);
console.log(numReduce)
//17
정리
map - 배열 내부 요소들을 변형하여 새로운 배열 생성
filter - 배열 내부 요소들의 값을 걸러서 새로운 배열 생성
reduce - 배열 내부 요소들을 하나로 통합
참조
'Study > Javascript' 카테고리의 다른 글
[javascript] Session storage, Local storage, Cookie (0) | 2022.12.02 |
---|---|
[javascript] 이벤트 버블링, 캡처링 (0) | 2022.05.28 |
[javascript] for in, for of, forEach (0) | 2022.03.21 |
[javascript] http와 https (0) | 2022.03.04 |
[javascript] this (0) | 2022.03.03 |