정골라코딩

[JavaScript] map, filter, reduce 구현 본문

JavaScript/연습문제

[JavaScript] map, filter, reduce 구현

정골라 2022. 9. 29. 22:34

문제 설명)

 

1. map 함수를 구현하세요.

  • map 함수는 배열의 각 원소를 변환한 새로운 배열을 반환합니다.
  • func - (현재 아이템) => 변환된 아이템 형식입니다.
  • ex) item => item * 2 함수는 배열의 모든 원소에 *2를 적용합니다.
  • array의 내장 map 함수를 쓰지 않고, for문을 이용해 구현해보세요.

2. filter 함수를 구현하세요.

  • filter 함수는 배열의 각 원소 중 조건에 해당하는 원소만 들어있는 새로운 배열을 반환합니다.
  • func - (현재 아이템) => 조건(true or false) 형식입니다.
  • ex) item => item > 5 함수는 5보다 큰 값들만을 반환합니다.
  • array의 내장 filter 함수를 쓰지 않고 구현해보세요.

3. reduce 함수를 구현하세요.

  • reduce 함수는 배열의 각 원소를 함수에 맞게 합성해 하나의 값을 반환합니다.
  • func - (합쳐진 값, 현재 아이템) => ‘새로운 값’ 의 형식입니다.
  • initialValue - 초깃값입니다. 초깃값은 반드시 주어져야 합니다.
  • ex) (acc, cur) => acc + cur 함수는 배열의 모든 원소를 합칩니다.
  • array의 내장 reduce 함수를 쓰지 않고 구현해보세요.

 


Tip

  • 작성한 map, filter, reduce 함수에 들어가는 인자들은 App.js에서 확인할 수 있습니다.
  • 예를 들어, map(array, func)에서 func는, App.js에서 아래 코드를 참조하면, (item) => item * 2 라는 화살표 함수입니다.
  mapButton.addEventListener("click", () => {
    const newArray = arrayFunctions.map(currentArray, (item) => item * 2);
    result.innerHTML = `map 함수 결과 : ${JSON.stringify(newArray)}`;
  });
const arrayFunctions = {
  map(array, func){
    // map 함수를 구현하세요.
    // map 함수는 배열의 각 원소를 변환한 새로운 배열을 반환합니다.
    // func - (현재 아이템) => 변환된 아이템 형식입니다.
    // ex) item => item * 2 함수는 배열의 모든 원소에 *2를 적용합니다.
    // array의 내장 map 함수를 쓰지 않고, for문을 이용해 구현해보세요.
    let newArray = [];
    // for(let i=0; i<array.length; i++){
    //     newArray.push(array[i]*2);
    // }
    array.forEach((elem)=>{
        newArray.push(func(elem));
    })
    return newArray;
  },

  filter(array, func) {
    // filter 함수를 구현하세요.
    // filter 함수는 배열의 각 원소 중 조건에 해당하는 원소만 들어있는 새로운 배열을 반환합니다.
    // func - (현재 아이템) => 조건(true or false) 형식입니다.
    // ex) => item => item > 5 함수는 5보다 큰 값들만을 반환합니다.
    // array의 내장 filter 함수를 쓰지 않고 구현해보세요.

    let newArray = [];
    array.forEach((elem)=>{
        if(func(elem)) {
            newArray.push(elem);
        }
    })
    return newArray;
  },

  reduce(array, func, initialValue) {
    // reduce 함수를 구현하세요.
    // reduce 함수는 배열의 각 원소를 함수에 맞게 합성해 하나의 값을 반환합니다.
    // func - (합쳐진 값, 현재 아이템) => '새로운 값' 의 형식입니다.
    // initialValue - 초기값입니다. 초기값은 반드시 주어져야 합니다.
    // ex) (acc, cur) => acc + cur 함수는 배열의 모든 원소를 합칩니다.
    // array의 내장 reduce 함수를 쓰지 않고 구현해보세요.
    let result = initialValue;
    array.forEach((elem)=>{
        result=func(result, elem);
    })
    return result;
  },
};

export default arrayFunctions;

'JavaScript > 연습문제' 카테고리의 다른 글

[JavaScript] String 바꾸기  (0) 2022.09.29
[JavaScript] Rest Operator  (0) 2022.09.29
[JavaScript] this로 event 접근하기  (0) 2022.09.29
[JavaScript] class  (0) 2022.09.27
[JavaScript] reduce() 함수  (0) 2022.09.27