数组的some,every,map,foreaach方法的区别
工作中我们经常会通过遍历对数组进行一些处理,但是有些特定的情况出现后我们可能会想要打断遍历,这个时候我们就需要注意了,不是所有的方法都能打断遍历的
map方法
map方法可以对数组进行遍历,但是在满足某些判断条件后,想要终止遍历是实现不了的,大家看代码
let arr = [{ name: '老于', age: 18 }, { name: '张三', age: 18 }, { name: '李四', age: 22 }, { name: '王五', age: 12 }, { name: '老朱', age: 25 }]
arr.map(item=>{
if(item.age>15){
item.name='老黄'
return false
}
})
console.log(arr);
看打印结果,在满足判断条件后仍然进行了全部的遍历
foreach方法
该方法与map方法一致,均不能打断,不再贴代码
some方法
some方法在满足条件想要打断数组遍历的话可以用return true来打断,some方法只要有一项为真就会返回true.
let arr = [{ name: '老于', age: 18 }, { name: '张三', age: 18 }, { name: '李四', age: 22 }, { name: '王五', age: 12 }, { name: '老朱', age: 25 }]
arr.some(item => {
if (item.age == 18) {
item.age = 19
return true
}
})
console.log(arr);
大家看打印结果,数组的第一个元素满足条件之后就直接跳出了循环
every方法
eevery方法也能打断循环,但是用法和some有些区别,every是在满足条件之后用return false来打断,切必须要有return true,every方法只要有一项不满足条件就会返回false
let arr = [{ name: '老于', age: 12 }, { name: '张三', age: 18 }, { name: '李四', age: 22 }, { name: '王五', age: 12 }, { name: '老朱', age: 25 }]
arr.every(item => {
if (item.age > 15) { item.name = '老黄'
return false
} else {
return true
}
})
console.log(arr);
打印结果如下
如果不加return true 的话就默认是return false 直接在第一个元素遍历时就退出了循环
因此,大家在工作的时候按需使用吧