filter()메서드는 주어진 함수에서 조건에 맞는 요소들을 모아 새로운 배열로 반환한다.
arr.filter(callback(element[,index[,array]])[,thisArg]
이와 같은 구문 으로 사용하면 된다.
매개변수
callback : 각 요소를 시험할 함수이며, true를 반환하면 요소를 유지하고 false를 반환하면 요소를 버린다.
다음 3가지 매개변수를 받는다.
- element : 처리할 현재 요소
- index : 처리할 현재 요소의 인덱스
- array : filter를 호출한 배열
thisArg : callback을 실행할 때 this로 사용하는 값
반환
조건에 맞는 요소로 이루어진 새로운 배열을 반환한다.
어떤 요소도 조건에 부합하지 않으면 빈 배열을 반환한다.
예제
- 짧은 문자열 걸러내기
1 2 3 4 5 6 7
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; const result = words.filter(word => word.length > 6); console.log(result); // Expected output: Array ["exuberant", "destruction", "present"]
- 모든 작은 값 걸러내기
1 2 3 4 5 6 7
function isBigEnough(value) { return value >= 10; } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); // filtered 는 [12, 130, 44]
- 배열 내용 검색
1 2 3 4 5 6 7 8 9 10 11 12
var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; // 검색 조건에 따른 배열 필터링(쿼리) function filterItems(query) { return fruits.filter(function(el) { return el.toLowerCase().indexOf(query.toLowerCase()) > -1; }) } console.log(filterItems('ap')); // ['apple', 'grapes'] console.log(filterItems('an')); // ['banana', 'mango', 'orange']
- 화살표 함수로 구현
1 2 3 4 5 6 7 8 9 10 11 12
const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; // 검색 조건에 따른 배열 필터링(쿼리) const filterItems = (query) => { return fruits.filter((el) => el.toLowerCase().indexOf(query.toLowerCase()) > -1 ); } console.log(filterItems('ap')); // ['apple', 'grapes'] console.log(filterItems('an')); // ['banana', 'mango', 'orange']