【问题标题】:javascript: 'return' is ignored and keeps looping [duplicate]javascript:'return'被忽略并不断循环[重复]
【发布时间】:2019-01-19 16:26:05
【问题描述】:
function checkMagazine(magazine, note) {
    var map = new Map();
    var noteAr = note.split(" ");
    var magazineAr = magazine.split(" ")

    noteAr.forEach((note) => {
        if (map.has(note)) {
            map.set(note, map.get(note) + 1)
        } else {
            map.set(note)
        }
    });

    magazineAr.forEach((word) => {
        if (!map.has(word)) {
            return "No"
        }
    });

    return "Yes"
}

我正在检查笔记的每个单词是否包含在杂志中,方法是首先对笔记的值进行散列并在杂志Ar中检查它们。如果哈希中不存在注释词,那么我是return "NOing。但是,我一直在控制台中返回“YES”。
我在调试器模式下观看过它,我看到它进入了命中“return No”的语句,但随后它继续执行 forEach 循环。我什至尝试过return false,但同样的事情。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    forEach 回调忽略返回的值 - 无论它是什么,数组中的每个项目都将使用 forEach 调用。对于您正在尝试做的事情,您可能应该改用every,它检查数组中的所有项目是否满足条件:

    const hasEveryWord = magazineAr.every(word => map.has(word));
    return hasEveryWord
      ? "Yes"
      : "No";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多