문제
아래 코드를 reduce를 한 번만 사용한 코드를 변경하여 스스로 작성하고,
직접 설명한 내용을 적어주세요.
const filterMaped = arr.filter(x => x % 2 !== 0).map(x => x * 2);
console.log(filterMaped) // [2, 6, 10]
해석
arr.filter(x => x % 2 !==0)
이 수식을 통해 짝수인 수를 제외시킨다 (홀수인 수를 출력한다)
.map(x => x * 2)
이 수식을 통해 출력된 수들을 2씩 곱해준다.
console.log
를 통해 예를 들어 arr.filter
에서 [1,3,5] 가 나왔을 때 .map
을 통해 2씩 곱하여서 [2,6,10] 이 결과값으로 출력된다.
코드 작성
const arr = [1,2,3,4,5]
const Reducechanger = arr.reduce(function(acc,cur){
if(cur % 2 !==0){
acc.push(cur * 2)
}
return acc
},[])
(주의! 최초값을 0으로 설정할 경우엔 빈 배열을 따로 선언해야만 한다.)
1) arr
을 [1,2,3,4,5] 로 선언을 해주고, Reducechanger
에 reduce
메서드를 활용한다.
2) 최초값을 빈 배열로 정의하고, 조건문에서 통과되어 출력된 값 (홀수 cur * 2) 을 최초값에 넣어준다.
3) 최초값을 현재값에 2를 곱한 수가 push 된다.
- 종합적으로 봤을 때, 이 reduce 메서드는 배열을 하나 하나 돌며 예전의 리턴값, 현재 리턴값을 갖고 활용할때 좋은 메서드라고 생각이 들었다.