문제

Given an integer array arr and a mapping function fn, return a new array with a transformation applied to each element.

The returned array should be created such that returnedArray[i] = fn(arr[i], i).

Please solve it without the built-in Array.map method.

 

예제

Arrays.map을 구현하는 함수로써, arr 원소들을 돌며 각각 fn(n) 값을 구해 새로운 배열에 넣는다.

위 예제의 경우 plusI의 두번째 파라미터로 인덱스가 들어가는 것에 유의한다.

 

constant() 함수가 파라미터에 상관없이 42를 반환하기 때문에 답은 arr의 길이만큼 42로 채워져 있는 배열이 된다.


코드

/**
 * @param {number[]} arr
 * @param {Function} fn
 * @return {number[]}
 */
var map = function(arr, fn) {
    const mappedArr = []
    
    arr.forEach((el, idx) => {
        mappedArr.push(fn(el, idx));
    })
    
    return mappedArr;
};

 

새로운 배열 mappedArr를 생성한 뒤, arr를 순회하며 각각의 원소와 인덱스값을 fn 함수에 넣는다. 이후 매번 반환된 값을 mappedArr에 넣고 순환이 종료되면 반환시킨다.

+ Recent posts