您的位置:首页 > Web前端 > JavaScript

js中动态创建关联数组的问题

2011-10-24 15:41 381 查看
 有时候大家在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]);
    }

   如有不明白的地方,可与我联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c
相关文章推荐