javascript - JavaScript 中的 forEach 可以返回吗?

标签 javascript arrays foreach

<分区>

我想知道 JavaScript 中的 forEach 是否可以返回,这是我的代码:

var a = [0, 1, 2, 3, 4];

function fn(array) {
  array.forEach(function(item) {
    if (item === 2) return false;
  });

  return true;
}

var ans = fn(a);
console.log(ans); // true

我想知道 2 是否在我的数组中,如果是,则返回 false,但似乎 forEach 函数已循环整个数组并忽略返回。

我想知道我是否可以使用 forEach 得到我想要的答案(我知道我可以使用 for(..) 得到我想要的)?亲爱的 friend ,请帮助我,非常感谢!

最佳答案

您可以使用 indexOf 代替 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

function fn(array) {
  return (array.indexOf(2) === -1);
}

也来自 forEach 的文档 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

Note: There is no way to stop or break a forEach() loop other than by throwing an exception. If you need such behaviour, the .forEach() method is the wrong tool, use a plain loop instead.

因此,返回值不能按照您使用的方式使用。但是你可以做一个 throw (不推荐这样做,除非你真的需要在那里引发错误)

function fn(array) {
  try {
      array.forEach(function(item) {
         if (item === 2) throw "2 found";
      });
  }
  catch (e) {
    return false;
  }

  return true;
}

关于javascript - JavaScript 中的 forEach 可以返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32041912/

相关文章:

javascript - 如何获取对象中包含的数组的长度?

Javascript 或查询 - 将关联数组转换为对象

c# - 在 Parallel.For 中使用索引器的正确方法

javascript - 使用 Kentico Kontent 时,对象数组未按照 CMS 中设置的顺序渲染

Javascript - 引用实例化对象

javascript - 双击 HTML 按钮不会在代码隐藏文件中创建事件处理程序

c++ - int main(int argc, char *argv[])

c# - 使用 foreach 之前需要存储列表吗?

使用 foreach 创建 Perl CGI 表

javascript - MeteorJS 和 PDF 生成