循环数组并在匹配正确的值时退出?

时间:2015-10-27 04:30:31

标签: javascript arrays functional-programming

简而言之,如果我的条件以功能性的方式得到满足,有没有办法退出循环?

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

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

我想从arr中提取第一个奇数 我最初的想法是,我可以使用.some并在遇到条件时获取第一个元素但是当我浏览MDN时,我很快发现它并不像我想象的那样简单{{1} }只返回.some值 所以,我的另一种方法是使用boolean来过滤掉所有奇数并抓住第一个,但这样做会使循环遍历整个数组,即使.filter已找到第一个循环中的奇数。这对于小型阵列是可以的,但对于具有大型元素的阵列,感觉这是非常不必要的。

我是否缺少功能性技术,或者这通常是函数式编程的用途?

仅供参考我的filter.some解决方案是: -

.filter

3 个答案:

答案 0 :(得分:3)

您可以将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);

答案 1 :(得分:2)

您可以使用array.prototype.find - 该页面上包含的是针对愚蠢浏览器的填充

用法:

result1 = arr.find(function(i){
  return i%2;
});

答案 2 :(得分:0)

尝试使用while循环

var arr = [4, 6, 2, 24, 16, 13, 88, 64, 28, 39, 66, 26, 9];
var i = 0;
// should break if odd number found, 
// `i` would be index of first odd number found in `arr`
while (arr[i] % 2 === 0 && i < arr.length) {
  ++i;
};
console.log(arr[i])