【发布时间】:2018-05-28 02:04:18
【问题描述】:
如何从数组的隐式循环中中断(类似于break 语句)?
Array.prototype.map、Array.prototype.forEach 等函数意味着对数组元素进行循环。我想有条件地尽早打破这个循环。
这个人为的例子:
const colours = ["red", "orange", "yellow", "green", "blue", "violet"];
colours.map(item => {
if (item.startsWith("y")) {
console.log("The yessiest colour!");
break;
}
});
导致SyntaxError: Illegal break statement。
如何像break 语句一样打破循环?
【问题讨论】:
-
Array#map不是为具有副作用的迭代而设计的(并且不得用于该目的),它无法停止。Array#forEach也不能停止。如果您需要查找需要使用Array#indexOf或Array#find或任何其他查找方法的内容。 -
你不能破坏地图。您必须使用可停止的方法,例如
for或while,或者,正如 @zerkms 建议的那样,您可以搜索您的项目而根本不进行迭代。 -
你不能,因为那些方法不允许。但是,如果你真的需要这个功能,你应该只使用带有计数器的
for循环。
标签: javascript control-structure