Map, Filter, Reduce

louis220·2021년 1월 29일
0

Map

배열 내의 모든 요소 각각에 대하여 주어진 함수를 적용시킨 결과를 모아 새로운 배열을 반환
map은 이렇게 하나의 데이터를 다른 데이터로 맵핑(mapping) 할 때 사용한다

	function DoubleElements(arr) {
    		return arr.map(function(n) {
			return n * 2;
		});
	} // [1, 2] 를 입력받을 시 [2, 4]를 리턴

Filter

주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환
filter는 이렇게 조건에 맞는 데이터만 분류(filtering) 할 때 사용한다

	function keep(arr, keeper) {
            return arr.filter(function(n){
              if(n === keeper) {
                return true;
              }
        	})
        } // keeper와 일치하는 요소만 return
        // keep([1, 2, 3, 2, 1], 2) 일때 [2, 2]를 리턴

Reduce

배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환
reduce는 이렇게 여러 데이터를 하나의 데이터로 응축(reduce)할 때 사용한다

reduce()는 빈 요소를 제외하고 배열 내에 존재하는 각 요소에 대해 callback 함수를 한 번씩 실행하는데, 콜백 함수는 다음의 네 인수를 받는다

누산기accumulator (acc) : 콜백의 반환값을 누적한다 콜백의 첫 번쨰 호출, initialValue이 존재할 경우 initialValue의 값이 된다
현재 값 (cur) : 처리할 현재 요소
현재 인덱스 (idx) : optional, 처리한 현재 요소의 index
원본 배열 (array) : optional, reduce()를 호출한 배열

리듀서 함수의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 된다
callback : 배열의 각 요소에 대해 실행할 함수. 다음 네 가지 인수를 받습니다

	function makeSum(arr) {
            return arr.reduce(function(acc,cur){
        	return acc + cur;
        	})
      	} // arr의 모든값을 더해서 return 한다
        //[2, 3, 4] 일 경우 7이 리턴
profile
기록을 하자

0개의 댓글