1.背景
ES5为数组新增了几个方法,包括5个迭代方法和2个归并方法,使用这些方法可以很优雅地写一些数组相关的代码。现在简单介绍一下这几个方法。
2.迭代方法
ES5为数组新增了5个迭代方法:
·every
·some
·filter
·map
·forEach
这几个方法有一些共同点:
a) 它们的参数都是一个function
b) 它们的参数function的参数都是一样的:(item, index, array) array就是调用这个方法的数组实例。
那么我们只需要知道各个方法的含义和返回值这两个指标就可以知道它们的用法了,下面一一介绍
every 返回值:Boolean;含义:如果数组中每个元素均满足条件,则返回true,否则返回false。
some 返回值:Boolean;含义:如果数组中有某个元素满足条件,则返回true,否则返回false。
filter 返回值:Array;含义:返回原数组中满足条件的元素组成的新数组。
map 返回值:Array;含义:返回原数组的每一项经过map参数指定的函数处理后的新数组。
forEach 返回值:没有返回值;含义:对数组中的每一项应用forEach参数指定的函数。
3.归并方法
ES5为数组增加了2个归并方法:
·reduce
·reduceRight
它们的含义是相同的,都是对数组元素归并处理,唯一不同的地方是reduce是从左到右,reduceRight是从右到左。
下面介绍一下reduce方法的用法。
reduce会迭代数组的所有项,然后构建一个最终返回值。它的参数有两个,第一个参数是一个function,这个function的参数列表为(pre, cur, index, arr),其中pre为上次迭代结果,cur为当前项。第二个参数是初始值。如果不传这个初始值,那么第一次迭代的pre是数组的第一项,cur是数组的第二项。如果传入了这个初始值,那么第一次迭代的pre是这个初始值,cur是数组的第一项
举例如下:
[1, 2, 3, 4, 5].reduce(function(pre, cur, index, array) {return pre + cur}); // 15