Javascript 使用for循环在数组中查找字符串是可行的,但这里forEach()不起作用。为什么以及如何纠正?
通过一些javascript数组练习巩固我的理解。遇到一个练习,我可以使用for循环轻松解决,但不使用forEach()方法。为什么会发生这种情况,我该如何纠正 下面列出了练习问题,我的代码使用了以下两种方法: 编写一个函数,该函数接受一个值数组,并返回一个表示数组中是否存在单词“hello”的布尔值Javascript 使用for循环在数组中查找字符串是可行的,但这里forEach()不起作用。为什么以及如何纠正?,javascript,arrays,for-loop,foreach,Javascript,Arrays,For Loop,Foreach,通过一些javascript数组练习巩固我的理解。遇到一个练习,我可以使用for循环轻松解决,但不使用forEach()方法。为什么会发生这种情况,我该如何纠正 下面列出了练习问题,我的代码使用了以下两种方法: 编写一个函数,该函数接受一个值数组,并返回一个表示数组中是否存在单词“hello”的布尔值 函数hello\u存在(数组){ 对于(i=0;i
函数hello\u存在(数组){
对于(i=0;i hello\u exists(my\u arr)//返回未定义的。不确定原因?
在forEach
中返回true
实际上不会向调用者返回值,并且没有任何效果
传入forEach
的回调指定在迭代中执行一组操作(不返回任何内容)
在forEach完成执行后使用变量返回
function hello_exists(array){
var exists = false;
array.forEach(function(val){
if(val == "hello"){
exists = true;
}
});
return exists;
}
作为替代方案,您可以使用
或者通过检查结果上的长度
function hello_exists(array){
return array.filter(function(val){
return val == "hello";
}).length > 0;
}
您的第二个hello_exists函数没有返回任何内容。看起来可能是因为其中包含了“return”,但这是在forEach函数中 在第二个示例中,需要为hello_exists函数返回一些内容。像这样的东西会有用的
function hello_exists(array){
var isTrue = false
array.forEach(function(val){
if(val === "hello") {
isTrue = true
}
})
return isTrue
}
var my_arr = ["some", "hello", "is", "cat"]
hello_exists(my_arr) // true
如果您设想一个简化的
forEach
实现,它也有助于理解正在发生的事情:
function forEach(array, fn) {
var i;
for (i = 0; i < array.length; i++) {
fn(arr[i]); // forEach doesn't care about what the function returns
}
}
函数forEach(数组,fn){
var i;
对于(i=0;iarray[i]=“hello”
不同于val==“hello”
可能的重复!谢谢,这对我来说是有意义的。谢谢pdenes,用这种方式检查forEach非常有帮助。
function forEach(array, fn) {
var i;
for (i = 0; i < array.length; i++) {
fn(arr[i]); // forEach doesn't care about what the function returns
}
}