【问题标题】:For loop not iterating through entire arrayFor循环没有遍历整个数组
【发布时间】:2017-05-14 08:13:08
【问题描述】:

我有两个数组

newArray1 = [104,101,108,108,111]; 

newArray2 = [104,101,121]; 

我只是检查 array1 中的某些数字是否在 array2 中。

for(i=0;i<newArray2.length;i++) { 
if(newArray.indexOf(newArray2[i]) > -1) { 
  console.log(newArray2[i]); 
} else { 

 }
}

通过 newArray2 循环时,循环仅遍历位置 0 和 1 ,并且不会到达最后一个数字。我只是好奇为什么整个数组没有被完全循环。在 for 循环体中登录到控制台时

console.log(newArray2[i]); 

我收到了

//104
//101

不是……

//104
//101
//121 

【问题讨论】:

  • the loop only iterates through position 0 and 1 - 不,只有0,因为return 往往会立即从函数返回
  • 代码完全按照您的指示执行。你没有得到121,因为它不包含在newArray 中。仅当值包含在 newArray 中时,您才记录该值。这就是if(newArray.indexOf(newArray2[i]) &gt; -1) { 部分的作用。您还期望条件做什么? 要明确: 整个数组都被迭代了,但你不是在每次迭代中都调用console.log
  • 我删除了问题中的返回语句。在本例中,if 语句为真。当我 console.log(newArray2[i]) 我只收到 0 和 1。
  • 好吧,既然您已经更改了代码以摆脱 returns,那么您让我的评论看起来很荒谬 - 但是,现在您的问题看起来同样荒谬,因为您只有 console.log newArray2[i] 如果值存在于 newArray .... 显然 121 不存在,因此您的代码非常正确地不会将 121 输出到控制台
  • 您收到一个引用错误,因为您从未定义过newArray。尝试提供live demo测试它是否按照您的想法执行。

标签: javascript


【解决方案1】:

首先,您将变量命名为 newArray1newArray2 在顶部,newArraynewArray2 在循环中...我认为这只是您错误地复制了代码。

问题是您正在使用 return,它结束了 for 循环...看起来您刚刚编辑了代码来解决这个问题,而您现在得到了您应该得到的结果! 121 不在 newArray1 中,因此 if 语句中的 console.log 永远不会执行。将它移到if(newArray.indexOf(newArray2[i]) &gt; -1) { 之前,您会在控制台日志中看到 121。

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多