数组遍历的方式

2017-11-22  本文已影响0人  菜鸟的觉醒

数组遍厉的5种方式 : forEach( ) , map( ) , filter( ) , some( ) , every( )

1. forEach ( callback( item , index , array ) ) : 对数组元素执行一次指定的回调函数,无返回数据
arguments : item , index , array
item:遍厉的每个数组内容   
index: 对应数组内容的索引值  
array: 遍历的数组本身
*****           
var arr = [1,3,5,7 ];
arr.forEach( function( item , index , array ) { 
    console.log( item );     //  1 , 3 , 5 , 7
    console.log( index );   //   0 , 1 , 2 , 3  
    console.log( array );   //   [ 1 , 3 , 5 , 7 ]
} )
2. filter ( callback( item , index , array ) , [ thisArgs ] ) : 对数组元素执行一次指定的回调函数,返回一个新数组( 满足筛选条件的数据),原数组不变
arguments: item , index , array ,thisArgs
item: 遍历的每个数据
index:对应数据的索引值
array: 遍历的数组本身
thisArgs : (可选)回调函数this指向 ,  如果 thisArg 参数有值,则每次 callback 函数被调用的时候,this 都会
指向 thisArg 参数上的这个对象。如果省略了 thisArg 参数,或者赋值为 null 或 undefined,则 this 指向全局对象 。 
****
var words = ["spray", "limit", "elite", "exuberant", "destruction", "present"];
var filterWords = words.filter( function( item , index , array ) {
    return item.length > 5   ; 
            //item:   "spray", "limit", "elite", "exuberant", "destruction", "present"
            //index:  0 , 1 , 2 , 3 , 4 , 5
            //array    ["spray", "limit", "elite", "exuberant", "destruction", "present"]
            //filterWords:  [ 'exuberant', 'destruction', 'present' ]
} )
3.map ( callback( item , index , array ) , [ thisArgs ] ) : 对数组元素执行一次回调函数 ,返回一个新数组 ( 执行过回调的数据), 原数组不变
arguments: item , index , array ,thisArgs
item: 遍历的每个数据
index:对应数据的索引值
array: 遍历的数组本身
thisArgs : (可选)回调函数this指向 ,  如果 thisArg 参数有值,则每次 callback 函数被调用的时候,this 都会
指向 thisArg 参数上的这个对象。如果省略了 thisArg 参数,或者赋值为 null 或 undefined,则 this 指向全局对象 。 
****
var words = [ 1 , 2 , 4 , 6 ];
var filterWords = words.map( function( item , index , array ) {
    return item + 2;
        //item: 1 , 2 , 4 ,  6
        //index: 0 , 1 , 2 , 3
        //array:  [ 1 , 2 , 4 , 6 ]
        //filterWords:   [ 3 , 4 , 6 , 8 ]  
} )
ps : 与filter区别是执行判断语句返回的不是满足条件的数据结果,而是一个true/false的数组 ,即:
var words = [ 1 , 2 , 4 , 6 ];
var mapWords = words.map( function( item , index , array ) {
    return item >  3;      //mapWords:   [ false , false , true , true ]  
} )
var filterWords = words.filter( function( item , index , array ) {
    return item >  3;      //filterWords:   [ 4 , 6 ];  
} )
4.some( callback( item,index,array ) ,[ thisArgs ]): 执行指定的回调函数,只要数组种有一个满足条件的就返回true,否则返回false
[  1 , 4 , 8 , 5 ].some( function(item){return item > 10} )   //false
[  1 , 4 , 8 , 5 ].some( function(item){return item > 5;})    //true
5.every( callback( item,index,array) ): 执行指定的回调,只有所有的数据满足条件才返回true,否则返回false
var  evenNum = function( num ){
    if(typeof num  !==  'number'){
        return false
    }
    if( num % 2 !== 0 ){
        return false
    }
    return true
}
[ 2 , 4 , 6 , 8 , 9 ].every( evenNum )   //false
[ 2 , 4 , 6 , 8 , 10 ].every( evenNum )   //true
上一篇下一篇

猜你喜欢

热点阅读