手写filter方法
filter函数内部需要一个回调函数,数组中的每个元素都会执行该回调函数,在执行回调函数时会将数组中的每个元素传递给回调函数的参数,在回调函数的函数体内进行判断,如果返回的是true,那么将该元素放到新数组arr中,如果判断的结果为false,则数据不会放到新数组arr中。
// 语法
array.filter(function(currentValue,index,arr), thisValue)
Array.prototype.filterOne = function (fn) {
if(Object.prototype.toString.call(fn) !== '[object Function]') {
throw new Error('参数错误')
}
var newArray = [];
for (var i = 0; i < this.length; i++) {
var f = fn(this[i]);
if (f) {
newArray.push(this[i]);
}
}
return newArray;
};
var array = [65, 56, 89, 53];
var arr = array.filterOne(function(){});
console.log("arr=", arr);