h758262007 2012-09-14 17:43
浏览 409
已采纳

javaScript使用for...in循环数组问题

代码一:

  var param = [1990,1991,1992];

   for(var t in param){
         alert(param[t]);
   }

如果这样写确实可以循环出数组的每一个元素

 

代码二:

  var str = "this is year 1990,1991,1992";
  var rex = /\b\d{4}\b/g;
  var param2 = str.match(rex);//正则匹配后 这个返回的也是数组啊 而且调用length属性的时候长度也是3。(param2.length=3)
  for(var t in param2){
       alert(param2[t]);
  }

为什么在代码二使用for...in循环的时候会弹出alert框6次啊? 一样是循环数组啊

而且第一次alert里面显示的值是“this is year 1990,1991,1992”

第二次是“1990” 第三次是“1991” 第四次是“1992”

然后第五次是“23” 第六次是“27”.

这是怎么回事啊

  • 写回答

4条回答 默认 最新

  • jinnianshilongnian 2012-09-14 20:13
    关注

    1、for-in 如果是数组循环的是索引 如果是对象循环的是属性名

    2、在chrome/firefox等浏览器将输出正确的结果
    for(var t in param2){
    alert(t); //t将是 0 1 2
    }

    3、在IE浏览器 还有input(原始串) index(当前匹配的位置) lastIndex(匹配的最后位置)属性
    for(var t in param2){
    alert(t); //t将是 input 0 1 2 index lastIndex
    }

    4、正确的方式是
    for(var i=0;i<param2.length;i++){
    alert(param2[i]);
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站