我需要我的filter
函数才能过滤数组和对象。如何在each
函数中使用我的filter
函数来执行此操作? (我很确定我也不允许修改each
。)
问题:
1)对于任何给定的数组或对象,each
函数会产生什么?
2)Each
对数组或对象中的每个项执行某些操作。我不确定如何在我的each
函数中使用filter
,还会合并predicate
函数的filter
参数来生成我的过滤数组/对象
3)注意底部的问号。完成filter
函数后,对filter
的调用会产生什么?
var myArray = [1,2,3,4];
var myObject = {
job: "progammer",
age: 50
}
var each = function(collection, callback) {
if (Array.isArray(collection)) {
for (var i=0; i < collection.length; i++) {
callback(collection[i]);
}
} else {
for (var key in collection) {
callback(collection[key]);
}
}
};
var filter = function(collection, predicate) {
var newArr = [];
for (var i=0; i < collection.length; i++) {
if (predicate(collection[i])) {
newArr.push(collection[i]);
}
}
return newArr;
};
filter([1,2,3,4], function(value) {return value > 2;});
// [3,4]
filter(myObject, function(value) {return value.length > 5;});
// ?