首页 > 代码库 > 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及封装原理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。