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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱京辉 中级黑马   /  2013-1-18 04:28  /  2015 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 朱京辉 于 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]);这样用合理吗?

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

5 个回复

倒序浏览
是可以的,但是显示出来的内容是不一样的

for (var k in dict) {
            alert(k);
}
这里面K遍历出来是dict的键值,也就是 人,口 手, 如果你用alert(dict[k]),显示的应该是,"ren","kou","shou"

点评

嗯,我知道遍历出来的内容,我想知道这样好不好,比如效率如何?  发表于 2013-1-18 17:55

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
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]);
}

点评

就是说没有foreach的概念,只是js中的for可以像C#中的foreach一样那么用是吗?  发表于 2013-1-18 17:57

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
又没更详细的剖析,求指教
回复 使用道具 举报
js里是没有foreach这个关键字的,
for语句有两种用法,一种就是foreach的语法形式,alert(k)获得的是array的Key值,而alert(dict[k])获得的是其value值。

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
yeah,可以像for一样用!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马