본문 바로가기
카테고리 없음

자바스크립트 filter() 메서드

by koreashowme 2019. 9. 24.

filter 메소드는 이름 그대로 요소들을 걸러내는 것이 목적입니다. 예제를 봅시다.


정수 배열에서 5의 배수인 정수만 모으기

var arr = [4, 15, 377, 395, 400, 1024, 3000];

var arr2 = arr.filter(function (n) {

return n % 5 == 0;

});

console.log(arr2);

 

// [15, 395, 400, 3000]

콜백 함수의 리턴은 boolean을 가집니다. 

리턴이 true인 요소만 모아서 새로운 배열을 만듭니다.

생략하면? 리턴은 undefined이므로 false가 됩니다.

만족하는 요소가 없다면? 빈 배열이 반환됩니다.

var arr = [4, 377, 1024];

var arr2 = arr.filter(function (n) {

return n % 5 == 0; });

 

console.log(arr2);

 

// [             ]

undefined도 아닌 빈 배열을 반환하는 것은 매우 큰 의미를 가집니다

보통 도메인을 해결하기 위해서 Array 메소드를 여러개 연결하여 사용하는데 빈 배열이라도 반환 함으로써 중간에 오류가 나지 않고 다음 Array 메소드를 사용할 수 있습니다.


 

// 5의 배수만 구해서 각 요소를 2배

var arr = [4, 15, 377, 395, 400, 1024, 3000];

var arr2 = arr.filter(function (n) {

return n % 5 == 0;

}).map(function (n) {

return n * 2; });

 

console.log(arr2);

// [30, 790, 800, 6000]

이상적인 입력 값은 위와 같겠지만.. 현실은 그렇지 않죠

=================================

 

// 5의 배수만 구해서 각 요소를 2배

var arr = [4, 377, 1024];

// 5의 배수가 없음.

 

var arr2 = arr.filter(function (n) {

return n % 5 == 0;

}).map(function (n) {

 

// filter로부터 빈 배열이 반환됨.

return n * 2; });

 

console.log(arr2);

 

 

// [      ]. map의 콜백 함수는 결국 한 번도 호출되지 않았으나 문제 없음.


만약 filter로부터 빈 배열이 아닌 결과 없음을 의미하는 다른 값이 반환되었다면 에러를 뿜었을 것입니다.

 

 

 

 

 


출처: https://bblog.tistory.com/300 [편두리 기업블로그]


 

 

 

 

comment