필터 같은 함수를 응용형 함수(응용형프로그램, 적용형프로그램), 함수가 함수를 받아서 원하는 시점에 해당하는 함수가 알고 있는 특정한 인자를 적용하는 식으로 프로그램 하는 것.
고차함수라고도 함. (함수를 인자로 받거나 함수를 리턴하거나 함수안에서 인자로 받은 함수를 실행하는 함수)
function _filter(list, predi) {
var new_list = [];
for (var i = 0; i < list.length; i++) {//list의크기만큼루프를돈다.
if (predi(list[i])) {//해당번째list를받아둔predi함수에게연속적으로적용
new_list.push(list[i]);
}
}
return new_list;
}
ex) _filter(users, function(user) { return user.age >= 30; }));
_filter([1,2,3,4], function(user) { return num % 2; }));
function _filter(list, mapper) {
var new_list = [];
for (var i = 0; i < list.length; i++) {
new_list.push(mapper(list[i]));
}
return new_list;
}
_each 만들기
for문을 돌면서 안에서 하는 행위를 위임하는 함수
function _each(list, iter) {
for (var i = 0; i < list.length; i++) {
iter(list[i]);
}
return list;
_each를 이용해서 다시 _map 만들기
_.map = function (list, mapper) {
var new_list = [];
/*for (let i = 0; i < list.length; i++) {
new_list.push(mapper(list[i]));
}*/
_.each(list, function (val) {
new_list.push(mapper(val));
});
return new_list;
};
_each를 이용해서 다시 _filter 만들기
_.filter = function (list, predi) {
let new_list = [];
//for (var i = 0; i < list.length; i++) {
//if (predi(list[i])) {
// new_list.push(list[i]));
//}
_.each(list, function (val) {
if (predi(val)) {
new_list.push(val);
}
});
return new_list;
};