如何在 TypeScript 中打破 forEach() 循环

在 TypeScript 中打破 forEach() 循环

How to break a forEach() loop in TypeScript

要打破 TypeScript 中的循环,通过将对方法的调用包装在一个块中forEach()来抛出并捕获错误。抛出错误时,该方法将停止迭代集合。forEach()try/catchforEach()

索引.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 与在循环中使用是一样的——它只终止当前迭代并继续下一次迭代。 returnforEach() 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
语句并使我们能够访问当前迭代的索引。

发表评论