在原型上实现 filter 方法?


应该怎么修改代码呀?才能运行过去

解决问题

阅读 884
3 个回答

把接收的形参补充上去就可以了,图上的测试用例试了没问题的
image.png

Array.prototype.myFilter = function (callbak) {
  const newArr = [];
  this.forEach((e, index, array) => {
    if (callbak(e, index, array)) {
      newArr.push(e);
    }
  });
  return newArr;
};
Array.prototype._filter = function(fn) {
    if (typeof fn !== "function") {
        throw Error('参数必须是一个函数');
    }
    const res = [];
    for (let i = 0, len = this.length; i < len; i++) {
        fn(this[i]) && res.push(this[i]);
    }
    return res;
}
- this.forEach(function(x) {
+ var self = this
+ this.forEach(function(x, index) {
-     if (callback(x) == true) {
+     if (callback(x, index, self)) {
            newArray.push(x);
      }
  })
推荐问题
宣传栏