# 题目描述
实现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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17