首先forEach、filter、map、find、findIndex都是用来遍历数组的,那么他们的区别是什么?
let stu=[
{name:'lisa',age:18},
{name:'lili',age:19},
{name:'anla',age:20},
{name:'alex',age:21},
{name:'tom',age:22},
]
1.forEach:
遍历数组全部元素,利用回调函数对数组进行操作,改变原数组。return用来控制循环是否跳出当前循环。
stu.forEach(item=>{
item.age=item.age+10
})
console.log(stu)
2.filter
主要用于过滤当前数组,找出符合条件的元素,返回一个新数组,不会改变原数组ˆ
let newstu=stu.filter(item=>{
return item.age>11
})
3.map
可以不改变当前循环当中的值,返回一个新的被改变过值之后的数组,一般用来处理需要修改某一个数组的值
let newstu2=stu.map(item=>{
return item.age+10
})
console.log(newstu2)
console.log(stu)
4.find()
该方法返回数组中第一个满足条件的元素,找不到则返回undefined(该方法为es6新增)
语法:arr.find(item,index,arr)(除了arr其他非必传)
item:每一次迭代查找的数组元素
index:每一次迭代查找的素组元素索引
arr:被查找的数组
function getStu(element){
return element.name == 'lisa'
}
stu.find(getStu)
//{name:'lisa',age:18}
5.findIndex()方法
返回数组中第一个满足条件的索引,找不到返回-1(该方法为es6新增)
语法:arr.findIndex(item,index,arr)
item:每一次迭代查找的数组元素。
index:每一次迭代查找的数组元素索引。
arr:被查找的数组。
function getStu(element){
return element.name == 'lisa'
}
stu.findIndex(getStu)//0