简而言之,如果我的条件以功能性的方式得到满足,有没有办法退出循环?
让我详细说明一下 假设我有一个数组: -
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
答案 0 :(得分:3)
您可以将some与变量一起使用来存储第一个奇数值。
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)
答案 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])