every(判断函数)
作用:数组中每一项都会去执行every里的函数,但是只有每一项返回true最终才会返回true
var a = [1, 2, 3, 4, 5, 6];
var b=a.every((n) => {
console.log(n);//1(迭代结束)
return (n%2==0);
})
console.log(b)//false
some(判断函数)
作用:数组中每一项都会去执行some里的函数,但是只有一项返回true最终就返回true
var a = [1, 2, 3, 4, 5, 6];
var b=a.some((n) => {
console.log(n);//1,2(迭代结束)
return (n%2==0);
})
console.log(b);//true
forEach(迭代函数)
作用:遍历数组,该方法没有返回值,和for一样,第二个参数是运行该函数的作用域对象。
var a = [1, 2, 3, 4, 5, 6];
var b=a.forEach((n,e) => {
if(n%2==0){
a[e]=n+1;
}
},a)
console.log(a);//[1,3,3,5,5,7]
map(处理函数)
作用:函数中的每一项都运行给定函数,返回一个新数组里面包含运行结果(返回结果)
也就是将返回结果组成一个新数组
var a = [1, 2, 3, 4, 5, 6];
var b=a.map((n) => {
if(n%2==0){
return n+1;
}
return n;
})
console.log(b);//[1,3,3,5,5,7]
filter(过滤函数)
作用:使数组中的每一项都执行filter里面的函数,返回使得函数返回true的新数组
var a = [1, 2, 3, 4, 5, 6];
var b=a.filter((n) => {
return n%2==0
})
console.log(b);//[2,4,6]
实现这些迭代函数
forEach():
Array.prototype.myForEach=function(fn,obj){
var len=this.length;
if(obj!=='undefined'){
fn=fn.bind(obj);
}
for(var n=0;n<len;n++){
fn(this[n],n,this)
}
}
every():
Array.prototype.myEvery=function(fn,obj){
var len=this.length;
if(obj!=='undefined'){
fn=fn.bind(obj);
}
for(var n=0;n<len;n++){
if(fn(this[n],n,this)==undefined){
return false;
}else if(!fn(this[n],n,this)){
return false;
}
}
return true;
}
some():
Array.prototype.mySome=function(fn,obj){
var len=this.length;
if(obj!=='undefined'){
fn=fn.bind(obj);
}
for(var n=0;n<len;n++){
if(fn(this[n],n,this)==undefined){
return false;
}else if(fn(this[n],n,this)){
return true;
}
}
return false;
}
map():
Array.prototype.myMap=function(fn,obj){
var len=this.length;
var res=[];
if(obj!=='undefined'){
fn=fn.bind(obj);
}
for(var n=0;n<len;n++){
res.push(fn(this[n],n,this));
}
return res;
}
filter():
Array.prototype.myFilter=function(fn,obj){
var len=this.length;
var res=[];
if(obj!=='undefined'){
fn=fn.bind(obj);
}
for(var n=0;n<len;n++){
if(fn(this[n],n,this)){
res.push(this[n])
}
}
return res;
}