아래 코드를 reduce를 한 번만 사용한 코드를 변경하여 스스로 작성하라
const filterMaped = arr.filter(x => x % 2 !== 0).map(x => x*2);
console.log(filterMaped) // [2, 6, 10]
아니 이 사람들이... 화살표 함수는 가르쳐 준 적 없으면서 과제를 화살표 함수로 내면 ㅠㅠ
역시 MDN을 찾아 이게 무슨 뜻인지 알아보도록 하자.
arr.filter(x => x%2 !== 0)
x는 (x를 2로 나눈 나머지가 0이 아닐 때의 값)
map( x => x*2 )
x는 (x를 2로 곱한 값)
위와 같이 해석할 수 있다. (화살표 함수는 가독성 향상을 위한 ES6 권고사항이라고 한다)
filterMaped
변수의 역할을 해석하면
입력받은 인자값(배열)의 각 요소를 2로 나눈 나머지가 0이 아닐 때(홀수일때) 그 값을 filter로 모아 배열을 만들고, filter로 걸러진 배열의 각 요소(홀수인 수)를 2로 곱한 배열이 변수에 저장된다.
let result = [];
arr.reduce(acc, cur) {
if(cur %2 !== 0) {
result.push(cur * 2)
}
}, 0)
let result = [];
reduce
는 본래 목적은 '누산'이기 때문에 map
이나 filter
처럼 배열을 리턴해주지 않는다. 그래서 먼저 결과를 저장할 빈 배열을 하나 생성해 준다.arr.reduce(acc, cur)
if(cur % 2 !== 0)
result.push(cur * 2)
, 0)