zoukankan      html  css  js  c++  java
  • 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 ( v, i) {
    		       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;
      } 
    

      

      

  • 相关阅读:
    Kafka-1
    消息队列
    分布式分类
    认识分布式
    数据库引擎
    Django插入多条数据—bulk_create
    Django中update和save()同时作用
    联合唯一去重的SQL
    Direct3D11学习:(三)Direct3D11初始化
    Direct3D11学习:(零)常见问题及解决方法整理
  • 原文地址:https://www.cnblogs.com/lijinblogs/p/5894672.html
Copyright © 2011-2022 走看看