【发布时间】:2024-10-14 17:10:01
【问题描述】:
使用一个函数来验证array 中的每个数字是true 还是false,并返回第一个真值number。
有一个带有 for 循环的有效解决方案,如下所示:
function findElement(arr, func) {
var num;
for (var a = 0; a < arr.length; a++) {
if (func(arr[a])) {
num = arr[a];
return num;
}
}
return num;
}
findElement([1, 3, 5, 8, 9, 10], function(num) {
return num % 2 === 0;
})
// Should return 8
但我正在尝试(为了更好地了解forEach)将其转换为forEach 循环。
这是我到目前为止的位置,但是在确定函数结果为真之后,我看不到如何将num 真正返回到循环之外:
function findElement(arr, func) {
if (arr.forEach(func) === true) {
return num;
}
}
findElement([1, 2, 3, 4], num => num % 2 === 0);
【问题讨论】:
-
var num; if (num = arr.find(func)) return num; -
forEach无法提前返回。 -
@Ele 啊,我需要了解 .find - 它看起来很适合这个(与 .filter(func) 一起),但我想了解 forEach!
-
那么你想要一个 forEach 的实现吗?
-
@daggett
forEach不是解决这个特殊问题的好选择。事实上,我很少发现它在处理数组时很有用。map,filter, andreducecan do most of the heavy lifting,虽然还有很多其他的迭代模式。你的函数可能最好写成first([1, 2, 3, 4], num => num % 2 === 0),它可以接受一个谓词并返回与谓词匹配的第一个结果。
标签: javascript for-loop foreach