오늘은 공부 중/자바스크립트

[javascript ] 빈값을 걸러내야 할 때 : filter(Boolean) :: map에 filter 추가하기

이도토리 2022. 2. 23. 20:58

https://stackoverflow.com/questions/16037049/why-does-javascript-map-function-return-undefined

 

Why does JavaScript map function return undefined?

My code var arr = ['a','b',1]; var results = arr.map(function(item){ if(typeof item ==='string'){return item;} }); This gives the following results ["a",&

stackoverflow.com

방금 그 건이 그렇게 잘 마무리 된 줄 알았으나 아니었다.

내가 잘 이해한 것인지 모르겠는데 filter는 기존 배열에서 거르는 작용을 하는 것 뿐이기에

기존 대상 내부에서는 가져올 수 있어도 그 외의 첨부 요소를 가져다가 붙여서 새로운 형체를 만들 순 없는 것 같다.

 

그래서 기존 값에 추가되어야 하는 요소가 있었던 나는 그냥 기존

map을 활용하되, map으로 가져온 값에서 filter로 undefiend를 걸러내는 식으로 일단 코드를 수정했다.

 

const notUndefined = anyValue => typeof anyValue !== 'undefined'    
const noUndefinedList = someList
          .map(// mapping condition)
          .filter(notUndefined); // by doing this, 
                      //you can ensure what's returned is not undefined

처음엔 이 코드를 참고했는데

filter(Boolean)이라는 좀 더 간결한 방식을 찾아내서 이걸 활용했다.

앞으로도 빈값 걸러낼 때 요긴하게 쓸 수 있을듯?

const arr = ['a','b',1]

const result = arr.map(element => {

  if(typeof element === 'string')
    return element + ' something'

}).filter(Boolean) // this will filter out null and undefined

console.log(result) // output: ['a something', 'b something']

https://velog.io/@yongbum/filter-boolean

Boolean iterator 로 사용하여 false, 0, -0, 0n, "", null, undefined, NaN를 제거할 수 있다.

 

filter(Boolean)를 활용한 JS 배열 관리

CRA(create-react-app) 프로젝트를 eject하여 소스를 분석하던 도중 신기한 소스를 발견했다.왜 이렇게 사용할까?JS에서 제공되는 배열은 아래와 같이 선언하여 사용할 수 있다.위에서 제공되는 예시와

velog.io