JavaScript Array中的map, reduce, filter方法

高阶函数

在JavaScript中,我们可以将一个函数作为另一个函数的参量,例如:

f=Math.abs()//绝对值函数
function add(x,y,f)
{
  return f(x)+f(y)
}
add(3,-4,f)//7

下面介绍几个常用的高级函数

map方法

map()方法可以对Array的每个对象进行操作。

例如对于一个数组[1,2,3,4,5],我们可以将数组内每个数进行平方以获得一个新数组

let x=[1,2,3,4,5]
let result=x.map(function(){
                 return x*x
                 })
console.log(result)//[1,4,9,16,25]

相较于for循环,通过map的方法我们可以更加直观的看到数组内的每个数被平方了。

我们可以通过map()做一些更有意思的事情,例如想一个字符串数组转换为number类型的数组。

let x=['1','2','3','4','5']
let result=x.map(Number)
console.log(result)//[1,2,3,4,5]
reduce方法

reduce()的函数需要传入两个参数,reduce将参数的计算结果与数组内的下一个元素做累积计算:

[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)

例如通过Array.reduce()对1-10求和

let arr=[]
for(let i=1;i<=10;i++)
  {
    arr.push(i)
	}
let result=arr.reduce(function(x,y){
  return x+y
})
console.log(result)//55

再例如,利用reduce把数组[1,2,3,4,5]变成12345

let arr=[1,2,3,4,5]
arr.reduce(function(x,y){
  x*10+y
})
filter方法

filter()可以通过函数所表示的条件过滤掉数组中的元素。

filter通过返回值的true/false进行过滤

最简单的,我们利用filter保留一个数组中的偶数

let arr=[1,2,3,4,5,6,7,8,9,10]
let result=arr.filter(function(x)
                     {
  if(x%2===0)
    return true;
  else return false;
})
console.log(result)//[2,4,6,8,10]

我们可以用filter方法筛选素数

function pick(arr)//pick函数挑选一个数组中的素数
{
  let result=arr.filter(function(x)
            {
    if(x====1)//这个算法需要先排除1
      return false;
    
    for(let i=2;i<Math.sqrt(x);i++)//为了提高效率,将x开方
      {
        if (x%i===0)
        return false
      }
      return true;
  })
  return result
}
console.log(pick([1,2,3,4,5,6,7,8,9,10]))//[2,3,4,5,7,9]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值