码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-09-24 07:02:45      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

### 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及封装原理

标签:

原文地址:http://www.cnblogs.com/lijinblogs/p/5894672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!