Array 的五种迭代方法 -----every() /filter() /forEach() /map() /some()
ES5定义了五个迭代方法,每个方法都接收两个参数:要在每一项上运行的函数和运行该函数的作用域对象(可选的),作用域对象将影响this的值。传入这些方法中的函数会接收三个参数:数组的项的值、该项在数组中的位置和数组对象本身。
1.every() 和 some()
every()是对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
some()是对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
every()和some()很相似,他们都用于查询数组中的项是否满足某个条件,对every()来说,传入的函数必须对每一项都返回true,这个方法才返回true;否则,则返回false。而some()方法则只要传入的函数对数组中的某一项返回true,就会返回true。例如:
var numbers=[1,2,3,4,5,4,3,2,1];
var everyResult=numbers.every(function(item,index,array){
return (item>2);
});
alert(everyResult);//false
var someResult=numbers.some(function(item,index,array){
return (item>2);
});
alert(someResult);//true
以上代码调用了every()和some(),传入的函数只要给定项大于2就会返回true。对于every(),它返回的是false,因为只有部分数组符合条件 ; 而对于some(),结果就是true,因为至少有一项是大于2的。
2.filter()
filter()是对数组中的每一项运行给定函数,返回该函数会返回true的项所组成的数组。它利用指定的函数确定是否在返回的数组中包含某一项。例如:
var numbers=[1,2,3,4,5,4,3,2,1];
var filterResult=numbers.filter(function(item,index,array){
return (item>2);
});
alter(filterResult); //[3,4,5,4,3];
此例子中,传入的函数要返回一个所有数值都大于2的数组,通过调用filter()方法创建并返回了包含3/4/5/4/3的数组,因为传入的函数对它们的每一项都返回true。这个方法对查询符合某些条件的所有数组项非常有用。
3.map()
map()是对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。这个数组的每一项都是在原始数据中的对应项上运行传入函数的结果,例如:
var numbers=[1,2,3,4,5,4,3,2,1];
var mapResult=numbers.map(function(item,index,array){
return item*2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]
以上代码返回的数组中包含每个数乘以2之后的结果,这个方法适合创建包含的项与另一个数组一一对应的数组。
4.forEach()
forEach() 是多数组中的每一项运行给定函数,这个方法没有返回值。它只是对数组中的每一项运行传入的函数,没有返回值。本质上与使用for循环迭代数组一样。
var numbers=[1,2,3,4,5,4,3,2,1];
numbers.forEach(function(iterm,index,array){
//执行某些操作
});
总结:这些数组方法通过执行不同的操作可以大大方便处理数组的任务,支持这些迭代方法的浏览器有IE9+、Firfox2+、Safari3+、Opera9.5、Chrome。
Array 的五种迭代方法 -----every() /filter() /forEach() /map() /some()的更多相关文章
- javascript总结25:Array的5中迭代方法: every(), filter() , forEach() map() some()
1 Array常用的操作方法: 1 操作方法 - concat() //把参数拼接到当前数组 -slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开 ...
- javascript中五种迭代方法实例
温习一下js中的迭代方法. <script type="text/javascript"> var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]; ...
- 5个现在就该使用的数组Array方法: indexOf/filter/forEach/map/reduce详解(转)
ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.然而,这些新奇的数组方法并没有真正流行起来的,因为当时市场上缺乏支持ES5的浏览器. ...
- JS中的五种去重方法
JS中的五种去重方法 第一种方法: 第二种方法: 第三种方法: 第四种方法: 第五种方法:优化遍历数组法 思路:获取没重复的最右一值放入新数组 * 方法的实现代码相当酷炫,* 实现思路:获取没重复的 ...
- JS数组中every(),filter(),forEach(),map(),some()方法学习笔记!
ES5中定义了五种数组的迭代方法:every(),filter(),forEach(),map(),some(). 每个方法都接受两个参数:要在每一项运行的函数(必选)和运行该函数的作用域的对象-影响 ...
- js数组的五种迭代遍历方式 every filter forEach map some
ECMAScript 5 为数组定义了 5 个迭代方法. 每个方法都接收两个参数 数组项的值和索引 every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 tru ...
- spring与mybatis五种整合方法
1.采用数据映射器(MapperFactoryBean)的方式 不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数. (1)Spring配置文件: <!-- 引入jdbc ...
- c++迭代递归实现汉诺塔(5种迭代方法满足你)
#include <iostream> //从A到C using namespace std; int n; void ready() { cout << "请输入汉 ...
- 精简Docker镜像的五种通用方法
http://dockone.io/article/8163 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患.优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而 ...
随机推荐
- js压缩解压工具
参看下面链接:http://js.clicki.cc/
- Java代理模式——静态代理模式
一:代理模式 代理模式的作用是:为其他对象提供一种代理以控制这个对象的访问.在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 二:代理模式设计 ...
- ecshop简单结构
Ecshop包括的文件夹有admin.api.cert.data.images.includes.js. languages.plugins.temp.theme.wap.widget这些文件夹,和根 ...
- netbeans ide怎么添加yii代码提示
菜单栏选择工具->选项->php界面里的全局包含路径中选择framework这个文件夹就可以了
- 正式学习React(四) 前序篇
预热 redux 函数内部包含了大量柯里化函数以及代码组合思想 柯里化函数(curry) 通俗的来讲,可以用一句话概括柯里化函数:返回函数的函数 // example const funcA = (a ...
- 利用Azure Backup备份和恢复虚拟机(2)
虚拟机注册之后,下一步就是将他们添加为受保护的项,在菜单底部,单击"保护"按照提示选择需要保护的虚拟机 单击"下一步",在这个页面中需要选择配置虚拟机配 ...
- Azure上Linux VM防DDOS攻击:使用Apache mod_evasive
部署在云端的虚拟机和web服务,很容易受到DoS护着DDoS的服务攻击,让一些新上线的业务苦不堪言,当然各个云服务提供商也有不同层面DDOS的防护,然而由于防护粒度,攻击复杂度的关系,未必可以满足你的 ...
- DPark安装及相关资料整理
最近需要处理海量数据的分布式计算及数据挖掘,经过多次选择(hadoop,Spark,DPark),最后还是选择了DPark,主要是看中DPark的轻量级及python的灵活性,且除了豆瓣外,在几个友公 ...
- Elf 32
[CentOS]安装软件:/ld-linux.so.2: ELF interpreter解决 环境: [orangle@localhost Downloads]$ uname -m&&am ...
- How ASP.NET MVC Works?
原文地址:http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html?ADUIN=7783008&ADSESSION ...