- 迭代方法
迭代方法一共包含5种:
- every():对数组种每一项运行给定的函数,如果该函数对每一项都返回true,则返回true。
- filter():对数组种每一项运行给定的函数,返回该函数会返回true的项所组成的数组。
- forEach():就是循环了,没有返回值。
- map():对数组种每一项运行给定的函数,返回每次函数调用的结果组成的数组。
- some():对数组种每一项运行给定的函数,如果该函数对任一项返回true,则返回true。
其实个人感觉还是从英文的字面去理解各个函数的作用比较好,every就是每一个都得行才行,filter就是过滤嘛, 满足条件的才行,some就是有一个就行,唯一需要稍微记一下的是map,它是对每一个进行操作,然后返回操作后的值,比如对一个数组[1,2,3,4]执行map(),使其每一项都*2,最终得到的就是[2,4,6,8]。
- 归并方法
归并方法一共有2种:
- reduce():迭代数组的的所有项,然后构建一个最终返回的值,从第一项开始。
- reduceRight():跟reduce()相反,是从最后一项开始, 向前迭代。
下面给出简单的代码示例:
var numbers = [1,3,2,5,8,4,2,6]
var everyResult = numbers.every(function(item, index, array){
return (item > 3)
})
alert(everyResult) //false,item是每一项,index是下标,array是原数组,下同
var someResult = numbers.some(function(item, index, array){
return (item > 3)
})
alert(someResult) //true
var filterResult = numbers.filter(function(item, index, array){
return (item > 3)
})
alert(filterResult) //[5,8,4,2,6]
var mapResult = numbers.map(function(item, index, array){
return (item*2)
})
alert(mapResult) //[2,6,4,10,16,8,4,12]
numbers.forEach(function(item, index, array){
//执行一个操作,无返回值
})
var values = [1,2,3,4,5]
var redeceResult = values.reduce(function(prev, cur, index, array){
return prev + cur
})
alert(redeceResult) //15,prev是前一个操作结果(第一次为数组的第一项:1),cur是当前项(第一次为数组的第二项:2),index是下标,array是原数组
关于上述迭代和归并,是ECMAscript5加进来的,支持目前的所有主流浏览器(没有IE8哈 ==!),所以对于ES6/ES7/ES8...当然也可以啦。
熟练这几个简单使用,去代替那些for循环吧!