JavaScript数组Array对象迭代函数(二)

目录

判断函数every()与 some()

过滤函数filter()

映射函数map()

执行函数forEach()

归并函数reduce()


       ECMAScript5为数组定义了5个迭代方法。每个方法都接收两个参数:每次迭代时运行的函数与该函数作用域对象this。其中,函数参数是每次迭代时,当前元素都会执行的函数,我称之为“迭代函数”。该函数会接收三个参数:当前迭代的元素当前迭代元素的索引数组对象本身。以下是这5种方法:

  1. every():数组元素执行迭代函数,如果该函数对所有元素的执行结果都为true则返回true。
  2. filter():数组元素执行迭代函数,返回该函数对元素执行结果为true所组成的新数组。
  3. forEach():数组元素执行迭代函数(仅仅是执行函数)。
  4. map():数组元素执行迭代函数,返回每次函数调用的结果组成的数组。
  5. some():数组元素执行迭代函数,如果该函数对任意一个元素的执行结果为true则返回true。

       以上的方法都不会修改数组中所包含的值。

判断函数every()与 some()

       在这些方法中,最相似的是 every()和 some(),它们都用于查询数组中的项是否满足某个条件。对 every()来说,传入的函数必须对每一项都返回 true,这个方法才返回 true;否则,它就返回 false。而 some()方法则是只要传入的函数对数组中的某一项返回 true,就会返回 true。请看以下:

var numbers = [1,2,3,4,5]; 

var everyResult = numbers.every(function(item){ 
    return (item > 2); 
}); 
alert(everyResult); //false 

var someResult = numbers.some(function(item){ 
    return (item > 2); 
}); 
alert(someResult); //true

       以上代码调用了 every()和 some(),传入的函数只要给定项大于 2就会返回 true。对于 every(), 它返回的是 false,因为只有部分数组项符合条件。对于 some(),结果就是 true,因为至少有一项 是大于 2 的。

注意:对于evey函数,如果当前迭代的元素不满足条件,则立刻终止迭代。同理,对于some函数,如果当前迭代元素满足条件,也立刻终止迭代。

过滤函数filter()

        filter()函数通过指定函数来筛选出满足指定条件的数组元素最终组合成一个新的数组并返回。例如下面这个例子:

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

映射函数map()

       map()函数也返回一个数组,与filter函数不同的是,它并不会筛选掉不满足条件的元素而组成新的数组。相反,它只是对迭代元素进行操作或判断之后将结果存储在一个新的数组中并返回。例如我们将筛选函数的例子一下:

var numbers = [1,2,3,4,5,4,3];
var filterResult = numbers.map(function(item, index, array){
    return (item > 2);
});
alert(filterResult); //false,false,true,true,true,true,true

filterResult = numbers.map(function(item, index, array){
    return item * 2;
});
alert(filterResult); //2,4,6,8,10,8,6

执行函数forEach()

       forEach()函数仅仅是为每次迭代的元素添加执行函数而已。该函数并不会返回什么,本质上仅仅是用来循环迭代数组而已,只不过我们仍然可以在里面添加一些操作。 

var numbers = [1,2,3,4,5,4,3,2,1]; 
numbers.forEach(function(item, index, array){ 
    //执行某些操作 
});

归并函数reduce()

       迭代计算的方法reduce函数接收一个函数作为累加值,数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素最终为一个值。语法格式如下:

ArrayObj.reduce(function(total, item, index, array){
  //执行代码
},initialValue)
  • callback (必选。迭代数组中每个元素的函数,包含四个参数)

            total初始值或是计算结束后返回的值

            item:当前迭代元素的值

            index当前迭代元素的索引值

            array:当前迭代的数组对象

  • nitialValue (可选。传递给函数的初始值

       接下来我们来看看具体的实例

var items = [1,2,3,4,5];
var num = items.reduce(function(total,item){
	return total+item;
});
console.log(num); 	//15

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值