手写js filter函数随记

111 阅读1分钟

思路整理

大体脉路

  1. 形参是函数
  2. 形参函数需要传入参数。(当前元素,索引,数组本身)
  3. 形参函数体返回条件
  4. 最终返回满足条件的元素组成的数组

代码实现

Array.prototype.myFilter = function(arg) {
    if (typeof arg !== 'function') {
        throw new SyntaxError(arg + ' is not a function')
    }
    var fn = arg
    var result = []
    for (var i = 0; i < this.length; i++) {
        var condition = fn(this[i], i, this)
        if (condition) {
            result.push(this[i])
        }
    }
    return result
}

若有考虑不周的地方,请予以指正