# 题目描述

实现Array.filter函数的功能且该新函数命名为"_filter"。

# 测试用例

用例1

function test() {
  const a = [5, 6, 7];
  const newa = a._filter((i) => i > 5);
  const judge = JSON.stringify(newa) === "[6,7]";
  return judge;
}

console.log(test());
1
2
3
4
5
6
7
8

预计输出true

用例2:

输入: [1,2]._filter(i => i>1) 输出:[2]

# 实现思路

Array.filter包含三个参数

var newArray = arr.filter(callback(item,index,thisArr))

变量含义如下:

  • callback:测试函数
  • item:当前元素
  • index:当前索引
  • thisArr:调用了 filter 的数组本身
  • newArray:返回的新数组,包含所有通过测试的元素。

# 代码实现

Array.prototype._filter = function (callback){
  if (typeof callback !== "function") {
    return;
  }
  // 执行callback
  const arr = this;
  var res = [];

  for (let i = 0; i < arr.length; i++) {
    if (callback(arr[i], i, arr)) {
      res.push(arr[i]);
      console.log("test");
    }
  }
  console.log("res: ", res);
  return res;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17