Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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-in循环时字符串不匹配_Javascript_Arrays_String_For Loop_String Matching - Fatal编程技术网

为什么在javascript中使用for-in循环时字符串不匹配

为什么在javascript中使用for-in循环时字符串不匹配,javascript,arrays,string,for-loop,string-matching,Javascript,Arrays,String,For Loop,String Matching,为什么条件永远不能满足?它从来不会产生一个弹出窗口,在我的理解中应该显示x是列表的第三个元素 var list = []; list[0] = "ahhah"; list[1] = "abcdef"; list[2] = "123"; for (var x in list) { if (x == "123") alert("HA"); } 在中使用“for.”迭代数组时,将以字符串格式获取索引。您应该使用普通循环,如下所示 for (var i = 0; i < li

为什么条件永远不能满足?它从来不会产生一个弹出窗口,在我的理解中应该显示x是列表的第三个元素

var list = [];
list[0] = "ahhah";
list[1] = "abcdef";
list[2] = "123";

for (var x in list) { 
   if (x == "123")
     alert("HA");
}

在中使用“
for.”迭代数组时,将以字符串格式获取索引。您应该使用普通循环,如下所示

for (var i = 0; i < list.length; i += 1) {
   if (list[i] == "123")
     alert("HA");
}
for(变量i=0;i
引用

for..in
不应用于迭代索引顺序很重要的数组数组索引只是具有整数名称的可枚举属性,在其他方面与常规对象属性相同。无法保证for…in将以任何特定顺序返回索引,并返回所有可枚举属性,包括具有非整数名称的属性和继承的属性

因为迭代的顺序依赖于实现,所以在数组上迭代可能不会以一致的顺序访问元素。因此,在访问顺序非常重要的数组时,最好使用带有数字索引的for循环(或Array.forEach或非标准for…of循环)


中使用“
for.”迭代数组时,将以字符串格式获取索引。您应该使用普通循环,如下所示

for (var i = 0; i < list.length; i += 1) {
   if (list[i] == "123")
     alert("HA");
}
for(变量i=0;i
引用

for..in
不应用于迭代索引顺序很重要的数组数组索引只是具有整数名称的可枚举属性,在其他方面与常规对象属性相同。无法保证for…in将以任何特定顺序返回索引,并返回所有可枚举属性,包括具有非整数名称的属性和继承的属性

因为迭代的顺序依赖于实现,所以在数组上迭代可能不会以一致的顺序访问元素。因此,在访问顺序非常重要的数组时,最好使用带有数字索引的for循环(或Array.forEach或非标准for…of循环)

将使用键填充
x
,而不是值。它通常用于对象,而不是数组

for (var x in list) {
    //x = 0 / 1 / 2
    if (list[x] == "123")
        alert("HA");
将使用键填充
x
,而不是值。它通常用于对象,而不是数组

for (var x in list) {
    //x = 0 / 1 / 2
    if (list[x] == "123")
        alert("HA");
for(var i=0,listLength=list.length;i
保存对
list.length
的常量重新计算;或
for(var i=0,listLength=list.length;i
保存对
list.length
的常量重新计算。