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;
}
ES5新语法forEach和map及封装原理的更多相关文章
- java8新特性forEach在Map和List的应用
转自:https://www.cnblogs.com/go-onxp/p/jdk8.html java8 forEach 在Map和List中的使用 原始的使用 Map<String, Inte ...
- JS数组循环的性能和效率分析(for、while、forEach、map、for of)
从最简单的for循环说起 for( 初始化:条件; ){} 条件为Trusy 值时候,可以继续执行for 循环,当条件变为Falsy 时跳出for循环.for循环常见的四种写法const person ...
- forEach和map的区别,简单写了IE低版本的原形封装
今天有点'不务正业',旧的没有写完又开新的,没办法 -0- 今天遇到这个特感兴趣嘛入正题了 forEach 和 map 的区别 参考:http://blog.csdn.net/boysky0015/a ...
- forEach和map和for方法的区别
JS中的forEach.$.each.map方法推荐 转载 2016-04-05 投稿:jingxian 我要评论 下面小编就为大家带来一篇JS中的forEach.$.each.map方法 ...
- ECMAScript新语法、特性总结
前言 从2015年的ES6开始,JavaScript的语言标准每年都在更新,其中尤其以ES6的力度之大,到现在ES10已经发布,这里总结一下新语法. 参考:阮一峰 ECMAScript 6 教程 .E ...
- ES6新语法
ES6新语法概览 简介 ES6是JavaScript语言的新一代标准,加入了一些新的功能和语法,正式发布于2015年6月,亦称ES2015:该标准由ECMA(欧洲计算机制造联合会)的第39号技术专家委 ...
- JavaScript数组方法--flat、forEach、map
今天到flat了,一个第一次知道该方法还是看到一个面试题,别人给了个答案,用到了flat才知道的方法. 前面也写过关于这道面试题的文章,<一道关于数组的前端面试题>. 这里再来说说吧! f ...
- Node.js 全栈开发(二)——ES 201x 新语法的使用之基础篇
在讲 ES 2015 新语法之前,先来说一下为什么叫 ES.JavaScript 是这门语言的名称,它有一个为它制定标准化的组织 European Computer Manufacturers Ass ...
- forEach和map的用法和区别
forEach()和map()都是处理数组的高阶函数有相同的三个值:(currentValue,index,arr): currentValue:必选,当前元素的值,index:可选,当前元素的下标, ...
随机推荐
- Everything(文件搜索神器)
前言 Everything官网: http://www.voidtools.com/ 软件版本: V1.3.4.686 (x64) 操作系统: windows 7/10 搜索FTP(内网)资源 比如内 ...
- JavaScript 汉字与拼音互转终极方案 附JS拼音输入法
转:http://www.codeceo.com/article/javascript-pinyin.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的 ...
- PAT 1044. 火星数字(20)
火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, no ...
- thrift:swift项目笔记
先声明:此swift不是Apple公司的那个swift开发语言,而是facebook的另一个开源项目. facebook的thrift IDL文件,如果默认用thrift -gen java生成jav ...
- Cocos2dx 3.12 在AndroidStudio上编译配置
转载请标明出处:http://www.cnblogs.com/studweijun/p/5805576.html SDK,NDK,ANT的配置请看这里http://www.cnblogs.com/st ...
- 【UOJ #35】后缀排序 后缀数组模板
http://uoj.ac/problem/35 以前做后缀数组的题直接粘模板...现在重新写一下模板 注意用来基数排序的数组一定要开到N. #include<cstdio> #inclu ...
- 用libcurl 登录网站
libcurl 可以发送和接收HTTP消息,因此可以发送用户名.密码和验证码来登录网站,网上有不少这方面的内容,但不甚完整,我摸索了两天,将其中要点记录下来. 基本步骤 正常访问登录页面,访问时,设置 ...
- Java常见Exception整理
前言: 技术开发入坑近1年,摸打滚爬,各种升级打怪.因目前从事Java相关,故整理了一下并把常见的异常(Exception)贴出来,一来为了后续提醒自己,二来供即将入坑的朋友打一下预防针!A级(代码逻 ...
- ABBA BABA statistics
The ABBA BABA statistics are used to detect and quantify an excess of shared derived alleles, which ...
- Jquery 循环map的用法
$.each(map,function(key,values){console.log(key);$(values).each(function(){console.log("\t" ...