2023년 3월 09일
KSY
filter( ) 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환한다. 그래서 기존 배열은 유지되고 테스트에 통과한 요소들을 모아둔 새로운 배열이 만들어지는 것이다.
기본 구조는 아래와 같다.
arr.filter(callback(element[, index[, array]])[, thisArg])
callback 자리엔 각요소를 시험할 함수가 들어간다. true를 반환하면 요소를 유지하고, false를 반환하면 버린다.
element, index(optional), array(optional), thisArg(optional) 이렇게 매개변수는 3가지가 있다.
테스트 통과한 요소들은 새로운 배열로 만들어지고 만약에 모든 요소들이 통과하지 못하면 빈배열로 반환한다.
let array = [1,3,5,7,9];
let newArray = array.filter((x)=> x % 2 == 0);
console.log(newArray);
//[]
array 안에 있는 숫자들은 전부 홀수인데 filter를 사용해 짝수인 숫자만 통과하도록 했다. 그 결과 콘솔로 찍어봤을때 통과한 요소들이 없어 빈 배열로 반환했다는 것을 볼 수 있다.
thisArg 매개변수는 callback 함수 내에서 this키워드로 참조될 객체를 지정하는데 사용된다. 예시로 filter( )함수를 사용하여 객체 배열에서 특정 조건을 만족하는 요소를 필터링할 경우 callback 함수 내에서 this를 사용하여 객체의 프로퍼티에 접근할 수 있다. 이 때 thisArg매개변수를 사용해 this로 참조될 객체를 지정하면 된다.