JavaScript Array中高阶函数的使用

迭代方法

ECMAScript 5 为数组定义了 5 个迭代方法,每个方法都接受2个参数:要在数组每一项运行的函数和运行该函数的作用域对象——影响 this 的值(可选);传入这些方法的函数接受3个值:数组项的值(item),该值的索引(index)以及该数组对象本身(array);

1、every()

对数组的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true;

var arr=[-1,0,1,2,3];
//判断数组是不是全部都是正数
var result=arr.every(function(item,index,array){
      return item>0;
})
result;//false

2、filter() 过滤

返回运行给定函数为true的新数组;

var arr=[-1,0,1,2,3];
//返回正数
var arr1=arr.filter(function(item,index,array){
   return item>0;
})
arr1;

3、forEach()

循环每一项执行指定操作,和for...in..、for(var i=0;i

var arr=[-1,0,1,2,3];
arr.forEach(function(item,index,array){
     console.log(item);
})

4、map()

对数组中的每一项运行给定函数,返回每次函数调用的结果组成的新数组。

var arr=[-1,0,1,2,3];
var result= arr.map(function(item,index,array){
   return item*10;
})
result; //[-10,0,10,20,30]

5、some()

和every()类似,不同的是,只要数组项有一个返回true,则结果为true;

var arr=[-1,0,1,2,3];
//判断数组是否存在正数
var result=arr.some(function(item,index,array){
      return item>0;
})
result;//true

归并方法

ECMAScript 5 为数组定义了 2 个归并方法,reduce()和 reduceRight()。它的函数接受4个值,前一个项(prev),当前项(cur),当前项的索引(index),数组对象本身(array);而reduceRight()则从数组的最后一项开始,向前遍历到第一项。

reduce、reduceRight()

var arr=[1,2,3,4,5];
var result=arr.reduce(function(prev,cur,index,array){
  return prev+cur;
})
result; //15 
var result1=arr.reduceRight(function(prev,cur,index,array){
  return prev+cur;
})

result;//15;

上述方法的的函数,在支持ES6的环境里,我更喜欢采用箭头函数=>,如:

var arr=[1,2,3,4,5];
arr.forEach((item,index,array)=>{
    console.log(item);
})
//当然实际应用中,有可能只需要数组的值;则简写为:
arr.forEach(item=>{
  console.log(item);
})

你可能感兴趣的:(JavaScript Array中高阶函数的使用)