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:可选,当前元素的下标, ...
随机推荐
- PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树
#44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...
- [LeetCode] Contains Duplicate II 包含重复值之二
Given an array of integers and an integer k, return true if and only if there are two distinct indic ...
- Unity 处理IOC AOP
用Unity 可以做IOC(控制反转) AOP(切面)可以做统一的异常和日志处理,非常方便,项目中是用微软企业库中的Microsoft.Practices.Unity实现 1 定义接口与实现 //定义 ...
- JavaScript模板引擎artTemplate.js——template.helper()方法
上一篇文章我们已经讲到了helper()方法,但是上面的例子只是一个参数的写法,如果是多个参数,写法就另有区别了. <div id="user_info"></d ...
- linux基础-磁盘阵列(RAID)实例详解
磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 R ...
- [node.js 学习]1.start a simple server
1.启动一个本地的服务 下面是官方的例子,会生成一个随机端口,返回的是纯文本: var net = require('net'); var server = net.createServer((soc ...
- jQuery Mobile入门
转:http://www.cnblogs.com/linjiqin/archive/2011/07/17/2108896.html 简介:jQuery Mobile框架可以轻松的帮助我们实现非常好看的 ...
- java学习笔记之IO一()
1.缓冲输入文件 2.从内存输入 3.格式化的内存输入 4.基本的文本输出 示例: public class BrAndBwOrPwDemo { public static void main(Str ...
- 我的博客CSS
这个是按照custom标准模板来做的,博客园已经有模版了,有些细节不是很好,这个是源CSS,喜欢的可以自由DIY,完善更好. @charset "utf-8"; /* CSS Do ...
- 利用django创建一个投票网站(一)
这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...