Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用for循环在数组中查找字符串是可行的,但这里forEach()不起作用。为什么以及如何纠正?_Javascript_Arrays_For Loop_Foreach - Fatal编程技术网

Javascript 使用for循环在数组中查找字符串是可行的,但这里forEach()不起作用。为什么以及如何纠正?

Javascript 使用for循环在数组中查找字符串是可行的,但这里forEach()不起作用。为什么以及如何纠正?,javascript,arrays,for-loop,foreach,Javascript,Arrays,For Loop,Foreach,通过一些javascript数组练习巩固我的理解。遇到一个练习,我可以使用for循环轻松解决,但不使用forEach()方法。为什么会发生这种情况,我该如何纠正 下面列出了练习问题,我的代码使用了以下两种方法: 编写一个函数,该函数接受一个值数组,并返回一个表示数组中是否存在单词“hello”的布尔值 函数hello\u存在(数组){ 对于(i=0;i

通过一些javascript数组练习巩固我的理解。遇到一个练习,我可以使用for循环轻松解决,但不使用forEach()方法。为什么会发生这种情况,我该如何纠正

下面列出了练习问题,我的代码使用了以下两种方法: 编写一个函数,该函数接受一个值数组,并返回一个表示数组中是否存在单词“hello”的布尔值

函数hello\u存在(数组){
对于(i=0;ihello\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;i您是否尝试在两种方法中使用相同的比较
array[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
    }
}