Js关联数组的问题

有时候大家在js中可能会有需求创建关联数组,并动态添加关联数组,但是却发现遇到一些问题。

比如:alert(arr.length)的时候没有任何输出以及用for循环遍历的时候也是没有任何输出,这到底是为什么呢?

请看下面两个例子:

例子一:

  var array1 = { "A":"a","B":"b","C":"c" };
for (key in array1) {  // 能够正常输出数组
       alert('=1=1=====' + key);
       alert('=1=2=====' + array1[key]);
    }

例子二:

var array2 = new Array();
        array2["A"] = "a";
        array2["B"] = "b";
array2["C"] = "c";
        for (var i=0;i<array2.length;i++) {
         alert('==1=====' + i);
         alert('==2=====' + array2[i]);
    }
第一个例子的数组能够正常输出,例子二的遍历却没有任何输出,这到底是为什么呢?

解释:

第一个例子并不是数组
而是创建了一个对象
循环输出的是这个对象的属性和值

第二个例子是数组
但是你把他当成一个对象来使用了
你的array2["A"]="a";
其实就是array2.A="a";
因为在数组的方括号里面只能填数字
所以你的赋值只是给你的array2添加了3个属性
分别是
array2.A="a"
array2.B="b"
array2.C="c"

   要想输出例子二的数组元素,可采用如下方法:

  for (key in array2) {    //in循环会输出这个对象的所有自定义属性

         alert('==1=====' + key);
         alert('==2=====' + array2[key]);
    }

posted on 2013-01-05 14:34  kudosharry  阅读(578)  评论(0编辑  收藏  举报

导航