高阶函数

什么是高阶函数

如果一个函数接受另一个函数作为参数,或者一个函数返回值是一个函数,那么我们就称该函数为高阶函数

JavaScript 中常见的高阶函数

forEach、map、reduce、filter

编写自己的高阶函数

需要注意的就是保持纯函数和减少函数副作用。 找出对象中符合要求的属性名

//自定义
var obj = {
  num1: 1,
  num2: 2,
  num3: 3,
  num4: 4,
  num5: 5,
  num6: 6,
}

function findProperty(obj, fn) {
  var _obj = Object.create(obj)
  var _propertyArr = []
  for (var item in obj) {
    if (fn.call(obj, obj[item], item)) {
      _propertyArr.push(item)
    }
  }
  return _propertyArr
}
findProperty(obj, (value, name) => {
  return value % 2 == 0
})