array_filter 함수 설명 및 활용 예제
함수 개요
array_filter
함수는 주어진 배열의 필터링된 버전을 반환하는 함수입니다. 이 함수는 배열의 모든 요소에 대해 실행되는 조건 함수(프레디케이트 함수)를 필요로 합니다. 이 함수는 각 요소에 대해 true
또는 false
를 반환해야 하며, true
를 반환하는 요소는 반환된 배열에 포함되고, false
를 반환하는 요소는 무시됩니다.
기본적으로 이 함수는 전체 배열을 검사하지만, 선택적으로 Offset
과 Length
인수를 제공하여 배열의 일부만 검사할 수 있습니다. array_copy_while
과 유사하지만, 프레디케이트 함수가 처음으로 false
를 반환하면 실행을 중지합니다.
반환값
- 필터링된 배열
예제 코드
function passed_the_test(element, index) {
return element >= 50;
}
scores = [0, 15, 4, 78, 96, 65, 49];
passed = array_filter(scores, passed_the_test);
위의 코드는 passed_the_test
라는 함수를 정의합니다. 이 함수는 element
와 index
매개변수를 받아들이며, element
의 값이 50 이상일 경우 true
를 반환하고, 그렇지 않으면 false
를 반환합니다. 그런 다음, 0에서 100 사이의 다양한 값을 가진 scores
배열을 생성합니다. 마지막으로 array_filter
를 호출하여 scores
배열을 필터링하고, 조건을 만족하는 값만 포함된 새로운 배열을 passed
변수에 저장합니다. passed
배열은 scores
배열에서 50 이상인 값만 포함하게 됩니다.
활용 예제
예제 번호 | 설명 |
---|---|
1 | 특정 점수 이상인 학생의 점수를 필터링 |
2 | 특정 날짜 이후의 이벤트를 필터링 |
3 | 특정 가격 이하의 상품을 필터링 |
4 | 특정 조건을 만족하는 사용자 목록 생성 |
5 | 특정 키워드를 포함하는 텍스트 필터링 |
예제 1: 특정 점수 이상인 학생의 점수 필터링
function is_passing_score(score, index) {
return score >= 60;
}
student_scores = [55, 70, 45, 80, 90];
passing_scores = array_filter(student_scores, is_passing_score);
예제 2: 특정 날짜 이후의 이벤트 필터링
function is_future_event(event_date, index) {
return event_date > current_date;
}
events = [date1, date2, date3];
future_events = array_filter(events, is_future_event);
예제 3: 특정 가격 이하의 상품 필터링
function is_affordable(price, index) {
return price <= budget;
}
product_prices = [100, 200, 50, 75];
affordable_products = array_filter(product_prices, is_affordable);
예제 4: 특정 조건을 만족하는 사용자 목록 생성
function is_active_user(user, index) {
return user.is_active;
}
users = [user1, user2, user3];
active_users = array_filter(users, is_active_user);
예제 5: 특정 키워드를 포함하는 텍스트 필터링
function contains_keyword(text, index) {
return string_pos("keyword", text) > 0;
}
texts = ["hello world", "keyword found", "no keyword here"];
filtered_texts = array_filter(texts, contains_keyword);