Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
IE8问题中的Javascript数组_Javascript_Arrays_Methods_Internet Explorer 8_Indexof - Fatal编程技术网

IE8问题中的Javascript数组

IE8问题中的Javascript数组,javascript,arrays,methods,internet-explorer-8,indexof,Javascript,Arrays,Methods,Internet Explorer 8,Indexof,据我所知,Javascript中的数组只是方法和对象的组合 现在我的任务是显示数组的值(比如说y\u array) 我使用了(y_数组中的x)的,,然后显示了值 在mozilla和IE中,它工作正常,但在IE中,它显示数组的第一个元素,索引为indexOf,值为indexOf(obj,from),这是我不想要的 我试过了 if(x!='indexOf') { display the array value ; } 它的工作和事情是好的,但有广泛的使用阵列显示,我正在寻找一些永久性的修复,而不

据我所知,Javascript中的数组只是方法和对象的组合

现在我的任务是显示数组的值(比如说
y\u array

我使用了(y_数组中的x)的
,然后显示了值

在mozilla和IE中,它工作正常,但在IE中,它显示数组的第一个元素,索引为
indexOf
,值为
indexOf(obj,from)
,这是我不想要的

我试过了

if(x!='indexOf') {  display the array value ; }
它的工作和事情是好的,但有广泛的使用阵列显示,我正在寻找一些永久性的修复,而不是这个硬编码的一个


有人能帮我吗

对于阵列,应使用以下For循环:

var y_array = [1,2,3,4];
for (var i = 0; i < y_array.length; i++) {
  var value = y_array[i];
  // do what you want
  alert(i + ': ' + value);
}

对于阵列,应使用以下For循环:

var y_array = [1,2,3,4];
for (var i = 0; i < y_array.length; i++) {
  var value = y_array[i];
  // do what you want
  alert(i + ': ' + value);
}

你不是第一个把数组和对象混在一起的人。因此,应包含此类问题的常见问题解答;)

让我们试着解释一下:

数组是一行值,可以使用它们在行中的位置来检索。数组值的顺序是固定的(并且可以重新排序)

对象是一个变量,它包含键值对形式的命名属性。属于对象的键值对的顺序是任意的

数组看起来像:
['first'、'second'、'third'、…、'nth']

对象看起来像:
{first:'firstvalue',second:'secondvalue',…,nth:'nthvalue'}

数组的第一个元素是索引为0的元素(因此行中的第一个位置的索引值为0)。您可以使用
myArray[0]

对象是无序的,因此它没有第一个元素。您可以使用
myObject.somekey
myObject['somekey']
从中检索任何元素

对于数组,使用循环遍历编号索引,直到到达数组末尾:

var i=0, len = myArray.length;
for ( i; i<len; i++ ) {
     //do something with >>> myArray[i] <<<
}
基本上,将数组视为一个带抽屉的橱柜,每个抽屉都包含一个值。一个物体可以想象为一堆盒子,盖子上贴着标签,描述盒子的内容。从一个物体上取回一些东西,你会问:在x堆里有一个贴纸y的盒子吗?如果有,盒子里有什么?从数组中检索某些内容时,您会问:请给我抽屉nr x的内容

现在,关于您的问题:您正在使用
for..in
循环检索值的数组包含一个用户定义的方法,即
indexOf
。对其使用对象样式循环,数组被视为对象,并且显示
indexOf
键(具有类似
function(){…}
I bet的值)。这就是为什么在迭代数组时,最好使用带有数字索引的传统for循环

为什么这只在IE中?在现代浏览器中,
indexOf
Array
prototype的本机方法,本机方法不会显示(除非您循环遍历它们的原型)。IE<9没有用于数组的本机indexOf方法。在脚本中的某个地方,您使用的方法已作为用户定义的扩展添加到阵列原型中


你的问题的底线是:不要将
用于。。。在
中循环数组的值。

您不是第一个将数组和对象混合在一起的人。因此,应包含此类问题的常见问题解答;)

让我们试着解释一下:

数组是一行值,可以使用它们在行中的位置来检索。数组值的顺序是固定的(并且可以重新排序)

对象是一个变量,它包含键值对形式的命名属性。属于对象的键值对的顺序是任意的

数组看起来像:
['first'、'second'、'third'、…、'nth']

对象看起来像:
{first:'firstvalue',second:'secondvalue',…,nth:'nthvalue'}

数组的第一个元素是索引为0的元素(因此行中的第一个位置的索引值为0)。您可以使用
myArray[0]

对象是无序的,因此它没有第一个元素。您可以使用
myObject.somekey
myObject['somekey']
从中检索任何元素

对于数组,使用循环遍历编号索引,直到到达数组末尾:

var i=0, len = myArray.length;
for ( i; i<len; i++ ) {
     //do something with >>> myArray[i] <<<
}
基本上,将数组视为一个带抽屉的橱柜,每个抽屉都包含一个值。一个物体可以想象为一堆盒子,盖子上贴着标签,描述盒子的内容。从一个物体上取回一些东西,你会问:在x堆里有一个贴纸y的盒子吗?如果有,盒子里有什么?从数组中检索某些内容时,您会问:请给我抽屉nr x的内容

现在,关于您的问题:您正在使用
for..in
循环检索值的数组包含一个用户定义的方法,即
indexOf
。对其使用对象样式循环,数组被视为对象,并且显示
indexOf
键(具有类似
function(){…}
I bet的值)。这就是为什么在迭代数组时,最好使用带有数字索引的传统for循环

为什么这只在IE中?在现代浏览器中,
indexOf
Array
prototype的本机方法,本机方法不会显示(除非您循环遍历它们的原型)。IE<9没有用于数组的本机indexOf方法。在脚本中的某个地方,您使用的方法已作为用户定义的扩展添加到阵列原型中


你的问题的底线是:不要将
用于。。。在
中循环数组的值。

如果json对象中没有值,如JSOBBJ={}。然后在IE<9中的空对象中获得了原型函数的indexOf。(使用类似函数()的值,{…}我打赌)也会显示

您可以在for循环的一侧检查一个条件。跳过那个索引<
var jsonObj = { key_1 : "value a", key_2: "value_2", key_3: 333 }
for (var key in y_array) {
if(key == 'indexOf'){continue;}           // check if the array contain indexOf 
   var value = y_array[key];
   // do what you want
   alert(key + ': ' + value);
}