var map = function(arr, fn) {
const output = [];
arr.forEach((e, i) => {
output.push(fn(e, i))
})
return output;
};
문제의 요지는 빌트인 map 메소드를 사용하지않고 배열의 모든 요소를 특정 함수의 실행결과값으로 변환하라는 점이다.
그래서 forEach 메소드를 사용했다. 여기서 주의할 점은 forEach 메소드는 reduce나 map 메소드와는 다르게 실행시undefined
를 리턴한다는 것이다.
그래서return arr.forEach(...)
으로 작성하면 항상undefined
를 리턴하게된다.
따라서 새로운 배열을 만들고 콜백함수의 실행결과값을 추가해줘야한다.