黑马程序员技术交流社区

标题: 关于JavaScript中的foreach问题 [打印本页]

作者: 朱京辉    时间: 2013-1-18 04:28
标题: 关于JavaScript中的foreach问题
本帖最后由 朱京辉 于 2013-1-19 20:46 编辑

js中的arry是一个宝贝,不仅是一个数组,还是一个dictionary,还是一个Stack
     var dict = new Array();
        dict[ "人" ] = "ren" ;
        dict[ "口" ] = "kou" ;
        dict[ "手" ] = "shou" ;
        alert(dict[ "口" ]);
        alert(dict.口);
     for (var k in dict) { //js中的foreach语法,遍历主键
            alert(k);
        }   
上面是上课的一个例子,我想把alert(k)其实改成alert(dict[k])也可以遍历全部内容
因为之前看到一个帖子分析foreach语法效率高,尽量用foreach,alert(dict[k]);这样用合理吗?
作者: 黑马刘俊    时间: 2013-1-18 12:16
是可以的,但是显示出来的内容是不一样的

for (var k in dict) {
            alert(k);
}
这里面K遍历出来是dict的键值,也就是 人,口 手, 如果你用alert(dict[k]),显示的应该是,"ren","kou","shou"
作者: 乔培培    时间: 2013-1-18 13:18
js没有foreach关键字,js中的for就是foreach,用法也类似
在你的代码中
alert(k)表示索引值,也就是“人”“口”“手”
alert(dict[k])表示具体的值,也就是“ren”“kou”“shou”,用法没有问题
eg.
for(var i in ary){
//i 为索引数字
alert(ary[i]);
}
for(var key in data){
// key 为关键字
alert(data[key]);
}

作者: 朱京辉    时间: 2013-1-18 18:03
又没更详细的剖析,求指教
作者: HM刘磊    时间: 2013-1-18 22:26
js里是没有foreach这个关键字的,
for语句有两种用法,一种就是foreach的语法形式,alert(k)获得的是array的Key值,而alert(dict[k])获得的是其value值。
作者: 乔培培    时间: 2013-1-19 17:36
yeah,可以像for一样用!




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