数组的迭代方法有every,some,forEach,fliter,map。
每个方法的参数是一个函数,函数的第一个参数是数组项,第二个参数是数组项的索引,第三个参数是数组本身
every方法对数组的每一项执行给定函数,如果每一项的执行结果都为true,则返回true;
1 //用every方法检测数组的每一项是否都是偶数,是则返回true,不是则返回false 2 function testEvery(){ 3 var a=[1,2,5,0,3,9]; 4 var result= a.every(function(item){ 5 return item%2==0; 6 }); 7 console.log(result); 8 } 9 testEvery();//结果false
some方法对数组每一项执行给定函数,如果有至少一项满足条件,则返回true,否则返回false
1 //用some方法检测数组中书否有偶数项,有则返回true,无则返回false 2 function testSome(){ 3 var a=[1,2,5,0,3,9]; 4 var result= a.some(function(item){ 5 return item%2==0; 6 }); 7 console.log(result); 8 } 9 testSome();//结果为true
forEach方法对数组每一项执行函数,没有返回值,和for循环一样的效果
1 //用forEach方法把数组中大于3的数变成3 2 var a=[1,2,5,0,3,9]; 3 function testForEach(){ 4 a.forEach(function(item,index,arr){ 5 if(item>3){ 6 arr[index]=3; 7 } 8 }) 9 } 10 testForEach(); 11 console.log(a);//结果[1,2,3,0,3,3]
filter方法对数组的每一项执行函数,返回结果为true的项组成的数组
1 //获得数组中的值为偶数的项 2 function testFilter(){ 3 var a=[1,2,5,0,3,9]; 4 var result=a.filter(function(item){ 5 return item%2==0; 6 }) 7 console.log(result); 8 } 9 testFilter();//结果[2,0]
map方法对数组的每一项执行函数,返回结果
//数组项加倍 function testMap(){ var a=[1,2,5,0,3,9]; var result=a.map(function(item){ return item*2; }) console.log(result); } testMap();//结果[2,4,10,0,6,18]
对类数组直接运用数组的迭代方法会报错
//对类数组,比如arguments childNodes function likeArray(){ var b=arguments.map(function(item){ return item>0; }) console.log(b); } likeArray(5,-2,3,8,-9);//报错
对类数组运用Array.prototype.方法.call(类数组,参数)进行转换后可以使用数组方法
1 //转换后 2 function testLikeArray(){ 3 var b=Array.prototype.filter.call(arguments,function(item){ 4 return item>0; 5 }) 6 return b; 7 } 8 var result=testLikeArray(1,3,-10,-6,-8,22); 9 console.log(result);//结果[1,3,22]
时间: 2024-12-18 15:50:16