【发布时间】: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]) > -1) {部分的作用。您还期望条件做什么? 要明确: 整个数组都被迭代了,但你不是在每次迭代中都调用console.log。 -
我删除了问题中的返回语句。在本例中,if 语句为真。当我 console.log(newArray2[i]) 我只收到 0 和 1。
-
好吧,既然您已经更改了代码以摆脱
returns,那么您让我的评论看起来很荒谬 - 但是,现在您的问题看起来同样荒谬,因为您只有 console.lognewArray2[i]如果值存在于 newArray .... 显然 121 不存在,因此您的代码非常正确地不会将 121 输出到控制台 -
您收到一个引用错误,因为您从未定义过
newArray。尝试提供live demo 并测试它是否按照您的想法执行。
标签: javascript