[英]If statement not working inside foreach loop javascript
我试图从数组中返回大于 25 的第一个值,而不使用其他方法,例如过滤器。 假设数组总是排序的。
该函数始终返回未定义。 为什么会这样? 这是代码:
function checkArr(arr){ arr.forEach(i => { if (i>25) return i; }) } console.log(checkArr([10,20,34,45]))
输出应该是 34。
使用forEach
,将对数组中的每个项目执行另一个函数。 该函数可以返回一个很好的值,但是它将被完全忽略。 如果要在checkArr
函数中返回一个值,则必须执行以下操作:
function checkArr(arr) {
for (let i of arr) {
if (i>25) return i;
}
}
您可以使用find
函数代替forEach
。 而且,您必须返回此函数的结果以获得答案,而不是undefined
。
function checkArr(arr) { return arr.find(i => i > 25); } console.log(checkArr([10,20,34,45]))
forEach
函数不返回任何内容,它仅对数组中的每个元素执行一些操作。
您的函数未返回任何内容。 并且在forEach
内部返回不会有任何效果,因为forEach
始终返回undefined
。 您可以使用简单的while
循环来执行此操作:
function checkArr(arr){ var i = 0; while (i<arr.length) { if (arr[i]>25) return arr[i]; i++; } return null; // if no entry is greater than 25 } console.log(checkArr([10,20,34,45]));
似乎您在寻找find
:
function checkArr(arr) { return arr.find(i => i>25); } console.log(checkArr([10,20,34,45]));
这是因为调用.forEach
时要传递一个委托函数。
代表的返回正迷路,并且没有适用于任何东西。 为了获得所需的结果,您需要退出调用函数checkArr
。
可以使用简单的for循环来完成。
function checkArr(arr){ for (var i = 0; i < arr.length++; i++) { if (arr[i] > 25) return arr[i]; } } console.log(checkArr([10,20,34,45]))
这种方法还支持较旧的浏览器,与某些浏览器不同
function checkArr(arr){
return arr.filter(m => m > 25)
}
checkArr([10,20,34,45]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.