无法打破for循环:非句法中断

时间:2017-10-30 14:21:13

标签: 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;
                            ...

然而,break语句给了我一个

  

非句法休息

为什么?它应该break for-loop,或者JavaScript认为我想打破map

3 个答案:

答案 0 :(得分:2)

就像你自己建议的那样,你仍然在map部分。这实际上是一个arrow function expression,你不再处于循环中。可以把它想象成你在其他地方定义的一些功能,但它是调用该功能的一种更快捷的方式。

您没有使用地图功能,因为它意味着在javascript中使用。它不是一种迭代数组的便捷方式,而是从其他数组创建一个新数组。您应该将map的使用情况更改为some form of a loop

答案 1 :(得分:2)

您无法使用breakmapreduce等方法forEach。 但您可以.filter之前或仅.find您需要的元素

答案 2 :(得分:0)

要解决此问题,您可以简单地使用 \b(?!\w)代替return;