필터 배열 의 falsey 대상

falsey 정의
falsey 는 가짜 값 으로 직역 할 수 있 으 며 false, '', "", null, undefinedNAN 이 몇 가지 데이터 형식 을 포함한다.
사고의 방향
첫 번 째 단 계 는 filter 필터 falsey 형식의 데 이 터 를 사용 한 다 는 점 을 쉽게 생각 할 수 있 습 니 다. 두 번 째 단 계 는 배열 의 모든 항목 을 Boolean 값 으로 바 꾸 는 방법 을 고려 하 는 것 입 니 다.
그 중에서 Boolean 은 데이터 형식 으로서 Boolean () 도 구조 함수 입 니 다. 받 은 첫 번 째 매개 변 수 를 boolean 값 으로 되 돌 릴 수 있 습 니 다. 그러면 첫 번 째 해법 이 왔 습 니 다 (idea 는 freecodecop 알고리즘 편 에서 왔 습 니 다)
const noFalsey = arr => arr.filter(Boolean)

두 번 째 방법 은 ! 수 동 으로 수 치 를 boolean 값 으로 바 꾸 는 것 이다.
const noFalsey = arr => arr.filter(v => !!v)

6 - 26 업데이트.lodash 솔 루 션 성능 분석 추가
세 번 째 해결 방안 은 lodash 소스 코드 (compact 방법) 에서 나온다.
 function compact(array) {
      var index = -1,
          length = array == null ? 0 : array.length,
          resIndex = 0,
          result = [];

      while (++index < length) {
        var value = array[index];
        if (value) {
          result[resIndex++] = value;
        }
      }
      return result;
    }

성능 분석['123', 0, null, NaN, undefined] 이 길이 가 5 인 배열 을 사용 하여 테스트 를 하고 세 가지 해결 방안 은 다음 과 같다.
  • 방법 1 (Boolean 구조 함수 사용) 0.034ms
  • 방법 2 (사용!! 강제 유형 전환) 0.205ms
  • 방법 3 (lodash 의 compact 방법 사용) 0.080ms
  • END

    좋은 웹페이지 즐겨찾기