Javascript数组中的循环

Javascript数组中的循环,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有一个简单的问题,我不知道为什么数组内容没有正确返回。我很确定这很简单,但不知何故,我没有得到我想要的结果。这种情况下,变量“compare”被设置为一个值,例如“apple”,我将循环到数组中,如果apple匹配索引,则将其打印到文本字段中。它不这样做,它总是说“不一样”的值。对于价值狗来说,它是有效的。它似乎到达了最后一个数组,然后进行比较。请帮忙 代码如下 <!DOCTYPE html> <html> <body> <script> fu

我有一个简单的问题,我不知道为什么数组内容没有正确返回。我很确定这很简单,但不知何故,我没有得到我想要的结果。这种情况下,变量“compare”被设置为一个值,例如“apple”,我将循环到数组中,如果apple匹配索引,则将其打印到文本字段中。它不这样做,它总是说“不一样”的值。对于价值狗来说,它是有效的。它似乎到达了最后一个数组,然后进行比较。请帮忙

代码如下

<!DOCTYPE html>
<html>
<body>

<script>
function myFunction() {
var text = "";
var i;
var arr = ["apple", "banana", "carrot", "dog"];
var compare = "apple";

for (i = 0; i < arr.length; i++) {

    if (arr[i] == compare) {text = "The value is " + arr[i] + "<br>";  }

    else if (compare == "" || compare == null) { text = "The value is blank"; }

    else if (arr[i] != compare) {text = "not the same"; }

else {text ="some error";}

    }

     document.getElementById("demo").innerHTML = text;
}
</script>
<p>Click the button to do a loop with a break.</p>

 <button onclick="myFunction()">Try it</button>


<p id="demo"></p>

</body>
</html>

函数myFunction(){
var text=“”;
var i;
var arr=[“苹果”、“香蕉”、“胡萝卜”、“狗”];
var compare=“苹果”;
对于(i=0;i”;}
如果(compare==“”| | compare==null){text=“该值为空”;}
else如果(arr[i]!=compare){text=“不一样”;}
否则{text=“某些错误”;}
}
document.getElementById(“demo”).innerHTML=text;
}
单击该按钮以执行带中断的循环

试试看

它似乎到达了最后一个数组,然后进行比较。请帮忙

实际上,是的,因为你永远不会停止循环。因此,您之前对
document.getElementById(“demo”).innerHTML所做的所有赋值都将被最后一个赋值覆盖

如果要在找到匹配项时停止,请使用
break
中断循环

如果您希望元素有一个已发生事件的列表(我想这可能是您试图做的,很难说),请在
文本中构建列表,然后在末尾指定:

if (compare == "" || compare == null) {
    // Doesn't make sense to loop in this case, presumably
    text = "The value is blank";
} else {
    text = "";
    for (i = 0; i < arr.length; i++) {

        if (arr[i] == compare) {
            text += "The value matches " + arr[i] + "<br>";
            //   ^--- note the +=
        } else {
            text += "The value doesn't match " + arr[i] + "<br>";
            //   ^--- note the +=
        }
    }
}
document.getElementById("demo").innerHTML = text;
if(compare==“”| | compare==null){
//大概在这种情况下循环没有意义
text=“该值为空”;
}否则{
text=“”;
对于(i=0;i”匹配;
//^---注意+=
}否则{
text+=“值与”+arr[i]+“
”不匹配; //^---注意+= } } } document.getElementById(“demo”).innerHTML=text;
您永远不会中断
循环的
。您必须使用
break
在满足
条件时退出循环

这是您的解决方案:

以及您的代码:

function myFunction() {
    var text = "";
    var i;
    var arr = ["apple", "banana", "carrot", "dog"];
    var compare = "apple";

    for (i = 0; i < arr.length; i++) {

        if (arr[i] == compare) {
            text = "The value is " + arr[i] + "<br>";
            break;
        } else if (compare == "" || compare == null) {
            text = "The value is blank";
            break;
        } else if (arr[i] != compare) {
            text = "not the same";
            break;
        } else {
            text = "some error";
            break;
        }

    }

    document.getElementById("demo").innerHTML = text;
}
函数myFunction(){
var text=“”;
var i;
var arr=[“苹果”、“香蕉”、“胡萝卜”、“狗”];
var compare=“苹果”;
对于(i=0;i”;
打破
}else if(compare==“”| | compare==null){
text=“该值为空”;
打破
}else if(arr[i]!=比较){
text=“不一样”;
打破
}否则{
text=“某些错误”;
打破
}
}
document.getElementById(“demo”).innerHTML=text;
}
干杯

功能打印(msg){
document.getElementById(“demo”).innerHTML+=msg+'
'; } 函数myFunction(){ var text=“”; var i; var arr=[“苹果”、“香蕉”、“胡萝卜”、“狗”]; var compare=document.getElementById('compare')。值; 如果(!比较){ 打印(“比较为空”); 返回; }否则{ 打印('比较'+比较); } 对于(i=0;i

单击该按钮以执行带中断的循环

试试看


如果
苹果
是阵列中的最后一个项目,那么它将起作用。这有帮助吗?旁注:您的最终
else
将永远不会被使用,因为您以前的条件涵盖了所有可能性。特别是,您有一个
if(arr[i]==compare)
和一个
if(arr[i]!=compare)
。除非你与NaN比较(NaN有一种不寻常的行为,它从来不是任何东西的
=
!=
),否则这两个词中有一个是正确的。你是一个救生员!我总是打印html元素,出于某种原因,循环会以这种方式变得疯狂。打印功能是一个很好的助手功能,我从来没有使用过!不客气。另外,您编写的整个数组搜索算法已经存在于javascript中。看这个:我询问的目的是巩固语法并熟悉它。总之,我将调用一个JSON文件并循环遍历它。我阅读了mozilla文档,它很有帮助,但对于我的实现,我希望它简单一些。我真的很感谢你的帮助!:)我今天学到了一个新东西DIf如果您想浏览JSON文件或大型Javascript数组和对象,请查看下划线。这大大节省了时间: