在 TypeScript 中打破 forEach() 循环
How to break a forEach() loop in TypeScript
要打破 TypeScript 中的循环,通过将对方法的调用包装在一个块中forEach()
来抛出并捕获错误。抛出错误时,该方法将停止迭代集合。forEach()
try/catch
forEach()
索引.ts
const arr: string[] = ['one', 'two', 'three']; const BreakError = {}; try { arr.forEach((element) => { if (element === 'two') { throw BreakError; } console.log(element); // 👉️ one }); } catch (err) { if (err !== BreakError) throw err; }
我们无法在break
循环外使用该语句 – 例如在
forEach()
方法中,因此我们必须将该forEach
方法包装在一个try/catch
块中。
我们基本上抛出一个错误来跳出
forEach()
方法,就像我们用break
语句跳出循环一样。错误在catch
块中被捕获,因此我们的应用程序继续运行没有任何问题。
在我们的
catch
块中,我们检查捕获的错误是否不等于BreakError
我们抛出的错误,如果不是则重新抛出。这有助于我们避免消除方法主体中的任何实际错误forEach()
。如果您尝试forEach()
使用该break
语句中断方法,则会出现错误。
索引.ts
const arr: string[] = ['one', 'two', 'three']; arr.forEach((element) => { if (element === 'two') { // ⛔️ Error: Jump target cannot // cross function boundary.ts(1107) break; } });
这是因为该break
语句只能用于跳出循环,但我们试图在函数中使用该关键字。
如果只想中断方法中的单个迭代forEach()
,则可以使用return
语句。
索引.ts
const arr: string[] = ['one', 'two', 'three']; arr.forEach((element) => { if (element === 'two') { return; } console.log(element); // 👉️ one, three });
上面的例子只跳过了第二次迭代,因为使用语句 with 与在循环中使用是一样的——它只终止当前迭代并继续下一次迭代。
return
forEach()
continue
请注意,我们可以break
在以下场景中使用该语句:
- 基本for循环
- for … of 循环
- for … 在循环中
- while 循环
- 开关语句
这意味着您可能会使用for...of
循环而不是
forEach()
方法并使用
break
语句退出。
索引.ts
const arr: string[] = ['one', 'two', 'three']; for (const element of arr) { if (element === 'two') { break; } console.log(element); // 👉️ "one" }
循环以与 相同的for...of
方式遍历数组forEach()
,但使我们能够使用break
语句。
如果在迭代时需要访问当前索引,则可以使用基本的 for 循环。
索引.ts
const arr: string[] = ['one', 'two', 'three']; for (let i = 0; i < arr.length; i++) { if (arr[i] === 'two') { break; } console.log(arr[i]); // 👉️ "one" }
基本循环的语法有点冗长,但使我们能够使用该break
语句并使我们能够访问当前迭代的索引。