关于数组中迭代的方法:every(),fileter(),forEach(),map(),some()

ES5中为数组定义了5种迭代的方法。每一个方法都接受两个参数,第一个为要在每一项上运行的函数,第二个参数可选,即为运行该函数的作用域对象---影响this的值。传入的方法中接受三个参数:数组的值,该项在数组中的索引和数组本身。根据使用的方法的不同,返回的东西也不同,这个是必然的。

every():对数组中的每一项运行给定的函数,如果该函数对每一项运行的结果都是返回true,则最终返回true。

filter():对数组中的每一项运行给定的函数,返回该函数会返回true的项组成的数组。

forEach():对数组中的每一项运行给定的函数,这个方法没有返回值

map():对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组

some():对数组中的每一项运行给定的函数,如果该函数对任意一项返回true了,则最终返回true。

 

其实这都说的挺明白的,具体的每一个举个例子大家感受下:

先对比下some和every吧

var numbers=[1,2,3,4,5,6,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,arr){
  return(item>2);
});
alert(everyResult);//false


var someResult = numbers.some(function(item,index,arr){
  return(someResult);
});

alert(someResult);//true

上面的代码非常的简单明了,节选自《Javascript高级程序设计》,也就是说every要每一项都满足我才给你过,some则是只要有一项满足我就给你过,类似&和||一样

下面说说filter这个函数

举个栗子:

var numbers = [1,2,3,4,5,6,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,arr){
  return(item>2);
});
alert(filterResult);//[3,4,5,6,5,4,3];

顾名思义,过滤器嘛,满足则过滤出来

map(),返回的也是一个数组,而这个数组的每一项都是原始数组中的对应项上运行传入函数的结果。

例如:

var numbers=[1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item,index,arr){
  return item*2;
});

alert(mapResult);//[2,4,6,8,10,8,6,4,2];

最后一个forEach就比较简单了

其实和for(var i = 0,length = arr.length;i<length;i++){...}一样

就是一个遍历,来循环迭代数组

方法接受的参数依旧是item,index,array

转载于:https://my.oschina.net/Nealyang/blog/782708

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值