ES6特性 之 数组的高阶函数

1.every

格式:

    var 变量名 = 数组名称.every((value,index,array)=>{

        return 判断条件

    })

注意:

  1. 返回的结果是布尔型的值
  2. 全都满足则为true,只要有一个不满足的条件则为false
  3. 类似逻辑与 && ,全真与为真
  4. 不会改变数组元素,也不会创建新数组
  5. 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
  6. 三个参数的关系:array[index]==value

练习:

var nums =[12,43,5,657,87,8]

// 需求:判断每个元素是否都是正数
var res = nums.every((value,index,array)=>{
    return value>0
})

//简化1:函数体中只有一行代码,省略{return }
var res = nums.every((value,index,array) => value>0)

//简化2:没有使用到的形参可以省略
var res = nums.every((value) => value>0)

//简化3:形参只有1个,可以省略()
var res = nums.every(value => value>0)

console.log(res?'全都是正数':'不全都是正数')
function Emp(name,age,salary,married){
    this.name=name
    this.age=age
    this.salary=salary
    this.married=married
}

//利用构造函数,创建一个数组
var emps=[
    new Emp('飞飞',28,20000,true),
    new Emp('帆帆',25,26000,false),
    new Emp('淼淼',32,9000,true),
    new Emp('昭昭',24,32000,false),
    new Emp('昕昕',25,20000,false)
]

//判断所有人是否都大于20岁
var a =emps.every(value => value.age>20 )
console.log(a?'所有人都大于20岁':'不是所有人都大于20岁')

2. some

格式:

    var 变量名 = 数组名称.some((value,index,array)=>{

        return 判断条件

    })

注意:

  1. 返回的结果是布尔型的值
  2. 只要数组中有一个满足条件的,结果就为true;全都不满足的话,则为false
  3. 类似逻辑与 || ,有真或为真
  4. 不会改变数组元素,也不会创建新数组
  5. 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
  6. 三个参数的关系:array[index]==value
var nums=[1,2,3,-54,56,576]

//判断数组里有没有负数
var x = nums.some((value,index,array)=>{
    return value<0
})
console.log(x?'数组中有负数':'数组中没有负数')

function Emp(name,age,salary,married){
    this.name=name
    this.age=age
    this.salary=salary
    this.married=married
}

//利用构造函数,创建一个数组
var emps=[
    new Emp('飞飞',28,20000,true),
    new Emp('帆帆',19,26000,true),
    new Emp('淼淼',32,9000,true),
    new Emp('昭昭',24,32000,false),
    new Emp('昕昕',25,20000,false)
]

//判断是否有人已婚且年龄小于20岁
var x = emps.some(value => value.married && value.age<20 )
console.log(x?'有人已婚且年龄小于20岁':'没有人已婚且年龄小于20岁')

3.filter -- 过滤

格式:

    var 变量名 = 数组名称.filter((value,index,array)=>{

        return 判断条件

    })

注意:

  1. 返回的结果是一个数组
  2. 按照判断条件,把数组中满足条件的元素找出来,组成新的数组
  3. 不会改变数组元素,也不会创建新数组
  4. 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
  5. 三个参数的关系:array[index]==value
var nums = [12,334,65,23,34,5668,565,65]

//找出所有的偶数
var x = nums.filter((value,index,array)=>{
    return value%2===0
})    

console.log(x)

4.map -- 映射

格式:

    var 变量名 = 数组名称.map((value,index,array)=>{

        return 判断条件

    })

注意:

  1. 返回的结果是一个新的数组;
  2. 数组中的元素按照某些规则进行转换,得到新的数组
  3. 不会改变数组元素,会创建新的数组
  4. 会按照原始数组元素顺序依次处理元素
  5. 不会对空数组进行检测
  6. 可以和AJAX结合,从对应的接口中获取真实的数据,对其进行操作,最终显示到页面中
  7. 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
  8. 三个参数的关系:array[index]==value
var nums = [12,43,564,65,7,87,97]

//翻倍
var x = nums.map((value,index,array)=>{
    return value*2
})

console.log(x)

5.forEach -- 遍历数组

格式:

 数组名称.forEach((value,index,array)=>{

    })

注意:

  1. 遍历数组中的全部元素,利用回调函数对数组进行操作,会自动遍历数组.length次数,且无法使用break中途跳出循环
  2. return只能用于控制循环是否跳出当前循环,不可直接输出
var nums = [12,34,5,65,67,87,9,823,2]

//遍历数组中的元素,算出总和
let sum = 0
nums.forEach(value => {
    sum += value
})

console.log(sum)

6.reduce -- 把数组元素计算为一个值(从左到右) 

格式:

    var 变量名 = 数组名称.reduce((box,value,index,array)=>{

        return box + value

    },box的初始值)

注意:

  1. reduce中有两个参数,第一个参数是回调函数;第二个参数是函数中第一个参数box的初始值,如果不写的话,默认是数组中的第一个元素
  2. 回调函数中有四个参数,其中前两个是必写的
  3. 四个参数:初始值/每次计算结果后的返回值,当前元素,当前元素的下标,当前元素所属的数组对象
var nums = [12,34,54,65,23,5,456,3,4]

//把数组中的元素,合并成1个值
var x = nums.reduce((box,value) => {
    return box+value
},0)

console.log(x)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值