filter,Map 해부해보기

양종하·2020년 10월 25일
0
post-thumbnail

filterMaped풀이과정

const filterMaped = arr.filter(x => x % 2 !==0).map(x => x*2);
console.log(filterMaped)

어렵지 않은 코드이다 filter() 메서드를 이용 인자로 들어간 테스트요구
조건을 가진 요소(여기에선 x % 2 !==0 '홀수')를 뽑아 내고 map()을
사용하여 배열내의 각각의 요소에 대하여 주어진 함수(여기선 x*2 인자에 2를곱한값)를 적용한 값을 모아 새로운 배열을 반환해 준다.

위와같은 코드를 reduce를 사용해 구현해 보려고한다.
첫째로 reduce에 대해 살펴보면 reduce 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다

 arr.reduce(callback[, initialValue])

콜백 함수에 위 filtermaped 처럼 홀수값에 *2를 해준다는 조건을 담은
새로운 콜백함수를 하나 만들어 주었다.

function onereduce(acc,cur){
if(cur % 2 !==0){
acc.push(cur*2)
}
return acc
}

이번에 만든 이 함수를 reduce에 인자로 넣어 확인을 해보니

let arr = [1,2,3,4,5,6,7,8,9,10]
console.log(arr.reduce(onereduce,[]))
[2, 6, 10, 14, 18]

이렇게 홀수값에 *2를 해준 배열을 reduce의 두번째인자로 넣은 초기값인 빈배열에 arr의 index를 돌며 하나씩 onereduce함수가 실행되고 새로운 배열을 만들어 주는것을 확인할수 있었다.

profile
내일이 더 즐거운 사람

0개의 댓글