我需要过滤数组和对象(使用下面我的过滤函数中的每个函数)

时间:2015-03-18 22:33:21

标签: javascript foreach filter each higher-order-functions

我需要我的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;});

// ?

0 个答案:

没有答案