首页 > 代码库 > ES5新语法forEach和map及封装原理

ES5新语法forEach和map及封装原理

### forEach

  在es5中提供了forEach方法进行遍历,其实就是模仿了jQuery中each方法,不过将 i 于v进行了调换,下面两种方法进行对比一下

 var arr = [ 11, 22, 33 ,44,55]; var res = $.each( arr, function ( i, v ) {	console.log( i + ‘, ‘ + v );	return false/true;//判断循环是否结束}); console.log( res ); // 返回遍历的数组var res = arr.forEach(function ( v, i ) {	console.log( i + ‘, ‘ + v );	return true;}); console.log( res ); // 返回遍历的数组       

### map  

              var arr = [ 11, 22, 33 ,44];		var res = arr.map( function ( i, v) {		       console.log( i + ‘, ‘ + v );			return v * 2;		});		console.log( res );//返回新数据

### 封装

 function forEach( arr, func ) {    var i;    // 在 ES5 中还引入了 Array.isArray 的方法专门来判断数组    if ( arr instanceof Array || arr.length >= 0) {        //传入的是数组      for ( i = 0; i < arr.length; i++ ) {        func.call( arr[ i ], arr[ i ],i );      }    } else {      //传入的是对象      for ( i in arr ) {        func.call( arr[ i ],  arr[ i ],i);      }    }    return arr;  }

 

  function map( arr, func ) {    var i, res = [], tmp;    if ( arr instanceof Array || arr.length >= 0 ) {      for ( i = 0; i < arr.length; i++ ) {        tmp = func( i,arr[ i ]);        if ( tmp != null ) {          res.push( tmp );        }      }    } else {      for ( i in arr ){        tmp = func( i,arr[ i ]);        if ( tmp != null ) {          res.push( tmp );        }      }    }    return res;  } 

  

  

ES5新语法forEach和map及封装原理