A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢玲 中级黑马   /  2012-12-16 16:00  /  1403 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序一:
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

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
在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声明为了字典了而第二个是正在的数组。不知道我说的你懂了没

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
js中的for-in循环不同于C#中的foreach循环,k只是代表了数组的下标,不代表元素,所以用的时候要使用arr[k]引用元素

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
在JS中array是特殊的dictionary,在遍历array时候,如果使用for(int k in array)形式,则遍历到的是key值;要遍历到value值,则要使用for(int i=0;i<arr.length;i++)的形式

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马