forEach方法
var person = [
{
"name" : "张三",
"sex" : 0 ,
"age" : 18
},
{
"name" : "李四",
"sex" : 0 ,
"age" : 20
},
{
"name" : "王五",
"sex" : 1 ,
"age" : 19
},
]
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
forEach(callback,[obj])
callback中5接收了三个参数 运行几次决定于arr的length
obj j决定了callback中的this指向
person.forEach(function(ele,index,self){
console.log(ele,index,self,this)
})
person.forEach(function(ele,index,self){
console.log(ele,index,self,this)
this[index].innerHTML = ele.name;
},document.getElementsByTagName("li"))
自定义封装数组方法:
Array.prototype.myForEach = function(fun){
var _arr = this;
var len = _arr.length;
var param2 = arguments[1] || window;
for(var i = 0;i < len;i++){
// fun.call(param2,_arr[i],i,_arr)
fun.apply(param2,[_arr[i],i,_arr])
}
}
personArr.myForEach(function(ele,index,self){
console.log(ele,index,self,this)
this[index].innerHTML = ele.name;
},document.getElementsByTagName("li"))
filter方法 过滤
person.filter(callback,object)
返回一个新的数组,callback返回值如果为true,就会在新数组中,false,就不存在
var newArr = person.filter(function(ele,index,self,this){
console.log(ele,index,self,this);
return true;
if(ele.sex == 0){
return true ;
else{
return false;
}
return ele.sex ==1;
},{
name : "hh"
})
自定义封装方法
Array.prototype.myFilter = function(fun){
var _arr = this;
var len = _arr.length;
var param2 = arguments[1] || window;
var newArr = [];
for(var i = 0;i < len;i++){
fun.apply(param2,[_arr[i],i,_arr]) ? newArr.push(_arr[i]) : "";
}
return newArr;
var newArr = personArr.myFilter(function(ele,index,self){
return ele.sex == 0;
},{
name : "hh"
})
console.log(newArr);
map方法 映射
map返回一个新的数组
var newArr = person.map(function(ele,index,self){
console.log(ele,index,self,this)
return 10;
return ele.name + 10;
ele.name += 10;
return ele
},{
name : "hh"
})
console.log(newArr);
自定义封装数组方法:
Array.prototype.myMap = function(fun){
var _arr = this;
var len = _arr.length;
var param2 = arguments[1] || window;
var newArr = [];
for(var i = 0;i < len;i++){
newArr.push( fun.apply(param2,[_arr[i],i,_arr]) ); //深克隆加进去
}
return newArr;
}
var newArr = personArr.myMap(function(ele,index,self){
ele.name += 10;
return ele
},{
name : "hh"
})
console.log(newArr)
every方法 :
返回一个boolean
var flag = personArr.every(function(ele,index,self){
console.log(ele,index,self,this);
return false;
return ele.age > 15;
}, {
name : "psh"
})
console.log(flag)
自定义封装数组方法:
Array.prototype.myEvery = function(fun){
var _arr = this;
var len = _arr.length;
var param2 = arguments[1] || window;
var flag = true;
for(var i = 0;i < len;i++){
if(!fun.apply(param2,[_arr[i],i,_arr])){
flag = false;
break;
}
}
return flag;
}
var flag = personArr.myEvery(function(ele,index,self){
console.log(ele,index,self,this);
return ele.age > 10;
}, {
name : "psh"
})
console.log(flag)