javascript - 遍历数组并在匹配正确值时退出?

标签 javascript arrays functional-programming

简而言之,如果以功能方式满足我的条件,是否有退出循环的方法?

让我详细说明。
假设我有一个数组:-

var arr = [4,6,2,24,16,13,88,64,28,39,66,26,9]

我想从 arr 中提取第一个奇数。
我最初的想法是我可以只使用 .some 并在满足我的条件时获取第一个元素但是当我查看 MDN 时我很快发现它并不像我想象的那么简单.some 只返回 boolean 值。
所以,我的另一种方法是使用 .filter ,它会过滤掉所有奇数并获取第一个,但这样做会使循环遍历整个数组,即使 filter 已经找到了循环中的第一个奇数。这对于小数组来说还好,但是对于元素很大的数组,感觉就很没必要了。

我是否遗漏了函数式技术的某些内容,或者这通常是函数式编程的方式吗?

仅供引用,我使用 .some.filter 的解决方案是:-

var result1, result2;

//Loop ends on the right element but result wrong value
var arr = [4, 6, 2, 24, 16, 13, 88, 64, 28, 39, 66, 26, 9];
result1 = arr.some(function (i) {
    return i % 2;
});

//Has right value but loop continues till the end
result2 = arr.filter(function (i) {
    return i % 2;
})[0];

最佳答案

您可以使用 some用一个变量来存储第一个奇数值。

Fiddle

var arr = [4, 6, 2, 24, 16, 13, 88, 64, 28, 39, 66, 26, 9];
var odd = 0;
arr.some(function(i) {
  console.log(i); // To check if this loop over all the elements of array

  odd = i; // Assign the value
  return i % 2;
});

document.write(odd);

关于javascript - 遍历数组并在匹配正确值时退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359992/

相关文章:

javascript - 创建一个类似于 POST 请求的链接

php - 错还是对?循环

c# - 如何使用 linq 将委托(delegate)聚合为新委托(delegate)

functional-programming - OCaml 表达式类型问题

scala - "coalgebra"在编程上下文中是什么意思?

javascript - 使用 node.js 从 Spring Boot 2 响应中读取传入的 HTTPS header

Javascript - 如何通过数据模型中的顺序获取 key

javascript - 如何在 Microsoft Word 中使用 office.js 编辑图表数据

c++ - 如何从 T 的数组创建 N T 的元组?

javascript - 在 JavaScript 中的数组中查找连续子数组的优雅方法?