filter()
메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환한다. 배열의 0번째 인덱스부터 array.length-1까지 인덱스를 차례로 함수에 적용한다. 또한, filter는 원본 배열을 유지한다는 장점이 있다.
const arr1 = [10, 20, 30, 40, 50];
const result1 = arr1.filter(item => item>30);
console.log(result1); // [40,50]
filter 뒤에 요소가 한개면 그 요소가 0번째 인덱스부터 array.length-1
까지 함수에 대입하여 true가 될때 그 인덱스 값을 반환한다.(인덱스를 바꾸고 싶으면 map함수를 사용한다.)
arr.filter( (element,index, array) => ,,,생략)
위와 같이 매개변수를 한개가 아니라 세개를 사용할 수 있다
element : 처리중인 현재 요소
index : 처리중인 현재 요소의 인덱스
array : 현재 배열
만약 어떤 요소도 함수를 통과하지 못하면(false) 빈 배열이 출력된다.
map()
메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
const array1 = [1, 4, 9, 16];
const map1 = array1.map(x => x * 2);
console.log(map1);
map함수가 array1의 요소를 x라는 매개변수로 받아 0번째부터 array1.length-1
까지 차례로 함수에 대입하여 새로운 배열로 반환한다. map함수도 원래 배열을 바꾸지 않는다.
하지만 요소가 삭제되거나 정의되지 않는 인덱스에 대해서 호출되지 않는다.
arr.map( (element,index, array) => ,,,생략)
element : 처리중인 현재 요소
index : 처리중인 현재 요소의 인덱스
array : 현재 배열