[1,2,3].forEach(function(el) {
    if(el === 1) break;
});

如何在JavaScript中使用新的forEach方法实现这一点?我尝试过返回;,return false;和断裂。break崩溃,return只会继续迭代。


当前回答

React中内置Array.prototype.map函数的突破

这里要注意的关键是使用语句return to BREAK

let isBroken = false;

colours.map(item => {
    if (isBroken) {
        return;
    }
    if (item.startsWith("y")) {
        console.log("The yessiest colour!");
        isBroken = true;
        return;
    }
});

此处提供更多信息:https://www.codegrepper.com/code-examples/javascript/break+out+of+map+javascript

其他回答

这是一个for循环,但像forEach()一样在循环中维护对象引用,但可以中断。

var arr = [1,2,3];
for (var i = 0, el; el = arr[i]; i++) {
    if(el === 1) break;
}

现在,在ECMAScript2015(也称为ES6)中使用新的for of循环有更好的方法来实现这一点。例如,此代码不打印数字5之后的数组元素:

常量arr=[0,1,2,3,4,5,6,7,8,9,10];for(arr常量){控制台日志(el);如果(el==5){打破}}

从文档中:

两者都用于。。。为。。。of语句对某些内容进行迭代。它们之间的主要区别在于迭代的内容。用于。。。in语句按原始插入顺序迭代对象的可枚举财产。用于。。。of语句迭代可迭代对象定义要迭代的数据。

迭代中需要索引吗?可以使用Array.entries():

for (const [index, el] of arr.entries()) {
  if ( index === 5 ) break;
}

使用array.prototype.every函数,它为您提供了中断循环的实用程序。请参阅Mozilla开发者网络上的Javascript文档示例

还有一种方法:

var wageType = types.filter(function(element){
  if(e.params.data.text == element.name){
    return element;
  }
});
console.dir(wageType);

如果您想保持forEach语法,这是一种保持其高效的方法(尽管不如常规for循环好)。立即检查一个变量,该变量是否知道您是否想要脱离循环。

此示例使用匿名函数来围绕forEach创建函数范围,您需要存储已完成的信息。

(函数(){var element=document.getElementById('打印结果');var done=假;[1,2,3,4].forEach(功能(项目){如果(完成){return;}var text=document.createTextNode(项);element.appendChild(文本);如果(项==2){done=真;回来}});})();<div id=“printed result”></div>

我的两分钱。