_filter, _map 함수에서도 for, list[i]부분이 중복된 걸 확인할 수 있다.
function _filter(list, predi) {
var new_list = [];
for (var i = 0; i < list.length; i++) {
if (predi(list[i])) {
new_list.push(list[i]);
}
}
return new_list;
}
function _map(list, mapper) {
var new_list = [];
for (var i = 0; i < list.length; i++) {
new_list.push(mapper(list[i]));
}
return new_list;
}
_each함수를 만들어 중복을 제거해 보자.
function _each(list, iter) {
for (var i = 0; i < list.length; i++) {
iter(list[i]);
}
return list;
}
//_each 함수는 list와 실행할 함수를 인자로 받고 반복하며 인자로 받은 함수를 실행하는 함수이다.
function _map(list, mapper) {
var new_list = [];
_each(list, function(val) {
new_list.push(mapper(val));
});
return new_list;
}
function _filter(list, predi) {
var new_list = [];
_each(list, function(val) {
if (predi(val)) {
new_list.push(val);
}
});
return new_list;
}