Filter

filter 함수는 배열을 순회하면서 조건을 만족하는 요소만을 배열로 반환한다.

const result = 배열.filter(콜백함수(요소, 인덱스, 배열객체));

사용법은 먼저 반환된 배열을 담을 변수를 선언하고 순회할 배열에 filter함수를 붙인다. filter함수 안에는 조건을 담고 있는 콜백함수를 넣는다. 이때 매개변수에는 요소(value), 요소의 인덱스(index), 순회하는 배열(Array) 순으로 넣을 수 있다.

간단한 예제를 살펴보자

const arr = [1, 2, 3, 4, 5];

let result = arr.filter(n => { 
	return n > 2;
});

console.log(result);

3, 4, 5

위의 코드에서 콜백함수의 조건은 n > 2, 2보다 큰 수이다. 순회할 배열 [1, 2, 3, 4, 5]에서 2보다 큰 수는 3, 4, 5이므로 result는 [3, 4, 5]가 담기게 된다.

filter 함수는 배열을 순회 할 때 빈 요소를 건너뛰기 때문에 반환된 값을 보면 빈 요소가 없다.

const arr = [1,2,,,,3,,,4,5];

let result = arr.filter(n => { 
	return n;
});

console.log(result);

1, 2, 3, 4, 5

또 아래 예제 같은 방식으로도 사용할 수 있다.

const arr = [    
  {"name":"Jack", "job": "student"},    
  {"name":"Mery", "job": "Nurse"},    
  {"name":"Emma", "job": "student"},    
  {"name":"Danny", "job": "office worker"}
];    
let result = arr.filter(val => {    
  return val.job === "student";
});  

console.log(result);

s

0: {name: “Jack”, job: “student”}
1: {name: “Emma”, job: “student”}