简而言之,如果以功能方式满足我的条件,是否有退出循环的方法?
让我详细说明。
假设我有一个数组:-
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用一个变量来存储第一个奇数值。
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/