黑马程序员技术交流社区

标题: Array()?? [打印本页]

作者: 谢玲    时间: 2012-12-16 16:00
标题: Array()??
程序一:
var arr=new Array();
   arr[“你”]=”tom”;
   arr[“我”]=”jack”;
arr[“他”]=”jerry”;
for(var k in arr){
alert(k;)
}

程序二:
var arr=new Array();
   arr[0]=”tom”;
   arr[1]=”jack”;
arr[2]=”jerry”;
for(var k in arr){
alert(k;)
}
为什么程序一输出结果为:tom、jack、jerry
但是程序二的输出结果为:0、1、2


作者: 汪书凯    时间: 2012-12-16 22:16
在Javascript 的数组Array,既是一个数组,也是一个字典(Dictionary)。先举例看看数组的用法。

var a = new Array();a[0] = "Acer";a[1] = "Dell";for (var i in a) { alert(i);}

上面的代码创立了一个数组,每个元素都是一个字符串对象。然后对数组进行遍历。注意 i 的结果为 0 和 1,a[i] 的结果才为字符串。下面再看一下字典的用法。

var computer_price = new Array();computer_price["Acer"] = 500;computer_price["Dell"] = 600;alert(computer_price["Acer"]);

我们甚至可以同样象上面那样遍历这个数组(字典)

for (var i in computer_price) { alert(i + ": " + computer_price[i]);}

这里的 i 即为字典的每个键值。输出结果为:

Acer: 500

Dell: 600

另外 computer_price 是一个字典对象,而它的每个键值就是一个属性。也就是说 Acer 是 computer_price 的一个属性。我们可以这样使用它:

computer_price.Acer

在你的程序1中就是把Array声明为了字典了而第二个是正在的数组。不知道我说的你懂了没
作者: 吴伟    时间: 2012-12-16 23:24
js中的for-in循环不同于C#中的foreach循环,k只是代表了数组的下标,不代表元素,所以用的时候要使用arr[k]引用元素
作者: 张小平    时间: 2012-12-18 11:41
在JS中array是特殊的dictionary,在遍历array时候,如果使用for(int k in array)形式,则遍历到的是key值;要遍历到value值,则要使用for(int i=0;i<arr.length;i++)的形式




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2