问题的提出
在Js中的forEach无法在所有元素都传递给调用的函数之前终止遍历。也就是说,没有像for循环中使用的相应的break语句。Jquery也是如此。
问题的解决
对于JavaScript的forEach
1. 可以使用for循环代替forEach
1 2 3 4 5 6
| let a = [...]; for (let i = 0; i < a.length; i++) { if (...) { } }
|
2. forEach方法放在一个try块中,并能抛出一个异常。如果forEach调用的函数抛出foreach.break异常,循环会提前终止。
1 2 3 4 5 6 7 8 9 10
| let a = [...]; try { a.forEach((e) => { if (...) { forEach.break = new Error('...'); } }) } catch(e) { throw e; }
|
对于Jquery的each
使用return来提前终止循环
jQuery中each类似于javascript的for循环 但不同于for循环的是在each里面不能使用break结束循环,也不能使用continue来结束本次循环,想要实现类似的功能就只能用return,return true 相当于continue,return false相当于break
。
1 2 3 4 5 6
| let a = [...]; a.each(() => { if (...) { } })
|