js语言中,数组对象(即Array类型)是一种非常常用的类型,ECMAScript数组的每一项可以保存任何类型的数据。
数组对象的方法有很多:“转换方法”、“栈方法”、“队列方法”、“重排序方法”、“操作方法”、“迭代方法”等。
这次就针对“迭代方法”的内容进行介绍。
ECMAScript5为数组定义了5个迭代方法:
every()、filter()、forEach()、map()、some()
每个方法都接收两个参数:
1、要在每一项上运行的函数。
2、运行该函数的作用域对象—this(可选)。
array.forEach(function () {
//do your staff here;
}, this);
传入这些方法中的函数参数本身会接收三个参数:
1、数组项的值;
2、该项在数组中的位置;
3、数组对象本身;
array.forEach(function (item, index, array) {
//do your staff here;
}, this);
every、filter、some、map、foreach的操作分别有什么作用?
every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
every返回的是布尔值,只要有一个返回false,结果就为false。
filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。
filter方法是对原数组进行筛选,将符合要求的值组成一个新数组,返回的是一个数组对象。
forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
没有返回值
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
返回一个布尔值。
JavaScript中reduce()方法
reduce方法也是对数组的每一项进行操作,一些人将其归于数组的迭代方法中。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值,是ES5中新增的又一个数组逐项处理方法
参数
callback(一个在数组中每一项上调用的函数,接受四个参数)
previousValue(上一次调用回调函数时的返回值,或者初始值)
currentValue(当前正在处理的数组元素)
currentIndex(当前正在处理的数组元素下标)
array(调用reduce()方法的数组)
initialValue(可选的初始值。作为第一次调用回调函数时传给previousValue的值,如果没有提供初始值,则将使用数组中的第一个元素。)
没有设置initialValue,给数组一个每项相加的函数,运行结果为pre = 1;
pre = 1+2 //3
pre = 3+3 // 6
…
return 10
设置了初始值为5
pre = 5;
pre = 5+1;
pre = 6+2;
…
return 15
参考文献:
《JavaScript高级程序设计》