
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를 리턴하게된다.
따라서 새로운 배열을 만들고 콜백함수의 실행결과값을 추가해줘야한다.