数组遍厉的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