728x90
반응형
underscore.js의 collection 중에서 _.filter( ) 함수에 대해 알아보자.
filter _.filter(list, predicate, [context])list: colletion으로써, 배열이나 객체가 될 수 있다.
predicate: list의 각 element(value)의 결과값이 truth인지 확인하는 test 함수이다.
[context]: predicate 함수에서 this로 바인딩 되는 것이다.(생략가능)--> list의 각 element(value)를 predicate 함수를 돌려,
값이 truth인 것만 배열의 element로 리턴한다.
[예제]
- [context]가 생략될 경우
<list가 배열일 경우>
var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){
return num % 2 == 0;
});
console.log(evens);
// [2, 4, 6]
// 배열 [1, 2, 3, 4, 5, 6]의 각 element가 test 함수의 num의 인자로 하나씩 들어가, 결과 값이 truth인 값만 모아 배열의 형태로 출력된다.
<list가 객체일 경우>
var obj = {"a": 1, "b": 2, "c": 3, "d":4}
var evens = _.filter(obj, function(num){
return num % 2 == 0;
});
console.log( evens );
// [2, 4]
// 객체 obj의 각 value가 test 함수의 num의 인자로 하나씩 들어가, 결과 값이 truth인 값만 모아 배열의 형태로 출력된다.
- [context]가 입력될 경우
더보기
A = [5, 7, 10, 15];var divideBy5 = _.filter([0,1,2,3], function(item) {
return this[item] % 5 == 0 ;
}, A)console.log(divideBy5);
// [0, 2, 3]
// 배열 [0,1,2,3]의 각 element가 test 함수의 item의 인자로 하나씩 들어가, 결과 값이 truth인 값만 모아 배열로 출력되는데, 이때 [context]로 사용된 A는 test 함수안에 있는 this로 바인딩 되어 사용된다.
[구현]
_.filter() 함수를 직접 구현해보자.
<알고리즘>
- 함수의 인자로 collection과 test를 가져온다.
- 최종 리턴 값이 배열이기 때문에, 빈 배열을 선언한다.
- _.each() 함수를 사용하여, 각 collection의 element(value)가 test 함수에서 truth인지 확인한다.
- truth이면, 그 element(value)를 빈 배열에 추가한다.
- 최종 배열을 리턴한다.
더보기
_.filter = function(collection, test) {
var result = [];
_.each(collection, function(elem) {
if(test(elem)) {
result.push(elem);
}
});
return result;
};
728x90
반응형
'JAVA HTML JAVASCRIPT > 소오스' 카테고리의 다른 글
HashSet이란? (0) | 2021.04.17 |
---|---|
padStart / padEnd (0) | 2021.04.17 |
javascript - fullcalendar eventRender (0) | 2021.04.17 |
[JavaScript] 자바스크립트 concat 메서드 이해하기 (0) | 2021.04.16 |
[JavaScript] 자바스크립트 forEach 메서드 이해하기 (0) | 2021.04.16 |