无法中断 for 循环:非语法中断

Sto*_*ace 9 javascript

我想break一个for-loop当满足特定条件

Object.keys(s).map(uk => {
    Object.keys(s[uk]).map(ik => {
        for (let i = 1; i < data.length; i++) {
            if (...) {
                s[uk][ik].map(elem => {
                    if (...) {
                        if (...) {
                            data.push(...);
                            break;
                            ...
Run Code Online (Sandbox Code Playgroud)

然而,break声明给了我一个

不合语法的中断

这是为什么?它应该只是一个breakfor-loop,还是JavaScript认为我想打破map

Pas*_*heu 15

要解决这个问题,您可以简单地使用 return;而不是break;


Neu*_*ron 8

就像您自己建议的那样,您仍然参与map其中。这实际上是一个箭头函数表达式,您不再处于循环中。将其视为您在别处定义的某个函数,但它是调用该函数的更快方法。

您没有使用 map 函数,因为它是在 javascript 中使用的。它并不是迭代数组的便捷方式,而是从其他数组创建一个新数组。您应该将使用更改map某种形式的循环


小智 7

您不能使用break与类似方法mapreduceforEach等,但你可以.filter你的数据之前或者只是.find你需要的元素