문제

Given an integer array arr and a filtering function fn, return a filtered array filteredArr.

The fn function takes one or two arguments:

  • arr[i] - number from the arr
  • i - index of arr[i]

filteredArr should only contain the elements from the arr for which the expression fn(arr[i], i) evaluates to a truthy value. A truthy value is a value where Boolean(value) returns true.

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

https://leetcode.com/problems/filter-elements-from-array/

 

예시

직접 filter 함수를 구현하면 된다. array를 돌면서 fn의 함수에 true가 나오는 값만 얕은 복사하여 새로운 배열을 만들어 준다.

 

코드

type Fn = (n: number, i: number) => any

function filter(arr: number[], fn: Fn): number[] {
    let newArr = [];
    
    arr.forEach((number, idx)=>{
        if(fn(number, idx)){
            newArr.push(number);
        }
    });
    
    return newArr;
};

리턴할 새로운 배열인 newArr를 만들고, arr를 돌면서 fn의 결과가 true인 원소만 newArr에 추가해주었다.

728x90

+ Recent posts