Filter方法详解:
array.filter(function(currentValue,index,arr), thisValue);该方法与forEach()类似,也是接受两个参数,一个是数组中每个元素调用的函数,另一个是该函数内的this指向,如果不传默认是window,传指了就指向该值。但也forEach()不同的是,函数需要返回true/false来过滤数组,将是true的元素拿出来。
上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组扩展</title>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<script>
// forEach 遍历数组
var personArr = [
{name:'王一',des:'有病',sex:'m'},
{name:'王二',des:'有钱',sex:'f'},
{name:'王三',des:'有才',sex:'f'},
{name:'王四',des:'有病',sex:'m'},
];
//实现原理
Array.prototype.myFilter = function(fn){
var _arr = this,len = _arr.length,param2 = arguments[1] || window,newArr = [];
for(var i = 0; i < len; i++){
fn.apply(param2,[_arr[i],i,_arr]) ? newArr.push(_arr[i]) : '';//根据返回的true/false来存放数组
}
return newArr
}
var newArr = personArr.myFilter(function(ele,index,self){
return ele.sex == 'm';
},{name:'tac'})
</script>
</body>
</html>