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