1.使用for循环或者for in 循环 breakk
for(let i=0;i<10;i++){
console.log(i)
if(i==3)break //0123
}
2.map,forEach,filter使用try catch 抛出异常中止循环
let arr = [1,2,3,4]
try{
arr.forEach(item => {
console.log(item)
if(item == 3){
console.log('中止循环....')
throw '中止'
}
})
}catch{
}
3.MDN官方推荐的方法every在碰到return false的时候,中止循环。
some在碰到return ture的时候,中止循环。
every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
every若收到一个空数组,此方法在一切情况下都会返回 true。
some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值
备注:如果用一个空数组进行测试,在任何情况下它返回的都是false。
let arr = [{name:'李四'},{name:''},{name:"张三"}]
arr.every(item => {
console.log(1,item.name)
if(item.name == ''){
console.log(2,item.name)
return false
}
})
//输出结果1 '李四' 2不执行
let arr = [{name:'李四'},{name:"王五"},{name:''},{name:"张三"}]
arr.some(item => {
console.log(1,item.name)
if(item.name == ''){
console.log(2,item.name)
return true
}
})
//输出结果 1 '李四' 》1 '王五'》 1 '' 》 2 ''
需要中止循环推荐采用some return true 中止循环 可以修改原数组每一项是对象型里面的属性
let arr = [{name:'李四'},{name:"王五"},{name:''},{name:"张三"}]
arr.some(item => {
if(item.name == '李四'){
item.name = 'lisi'
}
item.type = '姓名'
if(item.name == ''){
console.log('请输入姓名')
return true
}
console.log(1,item.name)
})
输出结果:1 'lisi'
1 '王五'
请输入姓名
不给结束条件也可以实现forEach遍历没一项
let arr = [{name:'李四'},{name:"王五"},{name:''},{name:"张三"}]
arr.some(item => {
console.log(1,item.name)
})
输出结果:1 '李四'》1 '王五'》1 ''》1 '张三'