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

Posted jines

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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及封装原理的主要内容,如果未能解决你的问题,请参考以下文章

js数组的map与forEach方法的区别及兼容性用法

邦道科技面试题

ES5新增 数组操作forEach()map()filter()some()every()

ES5新增 数组操作forEach()map()filter()some()every()

map、foreach、reduce、filters的用法及区别

238 ES5新增方法:forEach()map()filter()some()every()