[JavaScript] Array.filter() 활용하기
in JavaScript
Array.filter
filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열을 반환한다.
case 1) 모든 작은 값 걸러내기
다음 예는 값이 10 이하인 모든 요소가 제거된 걸러진 배열을 만들기 위해 filter()를 사용합니다.
const numbers = [12, 5, 8, 130, 44];
const filtered = numbers.filter((v) => v >= 10);
console.log(filterd); // [12, 130, 44]
case 2) 배열 내용 검색
다음 예는 배열 내용을 조건에 따라 검색하기 위해 filter() 를 사용합니다.
const fruits = ["apple", "banana", "grapes", "mango", "orange"];
const filterItems = (text) => {
return fruits.filter(
(el) => el.toLowerCase().indexOf(text.toLowerCase()) > -1
);
};
console.log(filterItems("ap")); // ['apple', 'grapes']
console.log(filterItems("an")); // ['banana', 'mango', 'orange']
case 3) JSON에서 무효한 항목 거르기
다음 예는 0이 아닌, 숫자 id인 모든 요소의 걸러진 json을 만들기 위해 filter()를 사용합니다.
const arr = [
{ id: 15 },
{ id: -1 },
{ id: 0 },
{ id: 3 },
{ id: 12.2 },
{},
{ id: null },
{ id: NaN },
{ id: "undefined" },
];
var invalidEntries = 0;
const isNumber = (obj) => {
return obj !== undefined && typeof obj === "number" && !isNaN(obj);
};
const filterByID = (item) => {
if (isNumber(item.id) && item.id !== 0) {
return true;
}
invalidEntries++;
return false;
};
var arrByID = arr.filter(filterByID);
console.log("Filtered Array", arrByID);
// Filtered Array
// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]
console.log("Number of Invalid Entries = ", invalidEntries);
// Number of Invalid Entries = 5