1.every
格式:
var 变量名 = 数组名称.every((value,index,array)=>{
return 判断条件
})
注意:
- 返回的结果是布尔型的值
- 全都满足则为true,只要有一个不满足的条件则为false
- 类似逻辑与 && ,全真与为真
- 不会改变数组元素,也不会创建新数组
- 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
- 三个参数的关系: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 判断条件
})
注意:
- 返回的结果是布尔型的值
- 只要数组中有一个满足条件的,结果就为true;全都不满足的话,则为false
- 类似逻辑与 || ,有真或为真
- 不会改变数组元素,也不会创建新数组
- 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
- 三个参数的关系: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 判断条件
})
注意:
- 返回的结果是一个数组
- 按照判断条件,把数组中满足条件的元素找出来,组成新的数组
- 不会改变数组元素,也不会创建新数组
- 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
- 三个参数的关系: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 判断条件
})
注意:
- 返回的结果是一个新的数组;
- 数组中的元素按照某些规则进行转换,得到新的数组
- 不会改变数组元素,会创建新的数组
- 会按照原始数组元素顺序依次处理元素
- 不会对空数组进行检测
- 可以和AJAX结合,从对应的接口中获取真实的数据,对其进行操作,最终显示到页面中
- 接收一个回调函数作为参数,其中回调函数中有三个参数:数组元素,数组元素的下标,元素的数组本身;三个参数都是形参,名称可以自定义
- 三个参数的关系: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)=>{
})
注意:
- 遍历数组中的全部元素,利用回调函数对数组进行操作,会自动遍历数组.length次数,且无法使用break中途跳出循环
- 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的初始值)
注意:
- reduce中有两个参数,第一个参数是回调函数;第二个参数是函数中第一个参数box的初始值,如果不写的话,默认是数组中的第一个元素
- 回调函数中有四个参数,其中前两个是必写的
- 四个参数:初始值/每次计算结果后的返回值,当前元素,当前元素的下标,当前元素所属的数组对象
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)