data
<script>
var users = [
{ name: "a", age:14 },
{ name: "b", age:31 },
{ name: "c", age:30 },
{ name: "d", age:35 },
{ name: "e", age:38 },
{ name: "f", age:40 },
{ name: "g", age:39 },
{ name: "h", age:41 },
{ name: "i", age:58 },
{ name: "j", age:48 },
{ name: "k", age:49 }
];
</script>
each
- Array.prototype.forEach 기능 구현
<script>
function _each(list, func) {
for (var i = 0, endi = list.length; i < endi; ++i) {
func(list[i], i)
}
}
_each(users, function(item, index, list){
console.log(item, index, list)
});
</script>
filter
- Array.prototype.filter 기능 구현
<script>
function _filter(list, func) {
var ret = [];
_each(list, function (item, index) {
if (func(item, index)) {
ret.push(item)
}
})
return ret;
}
var result = _filter(
users,
function(item, index, list){
return item.age >= 40
}
);
console.log(result);
</script>
map
- Array.prototype.map 기능 구현
<script>
function _map(list, func) {
var ret = [];
_each(list, function (item, index) {
ret.push(func(item, index));
})
return ret;
}
var result = _map(users,
function(item, index, list){
return item.age
}
);
console.log(result);
</script>
filter, map 응용
<script>
var result = _map(
_filter(users, function(item, index, list){
return item.age >= 40;
}),
function(item, index, list){
return item.name;
}
)
console.log(result);
</script>