for内新数组循环赋值,for外无法显示,为何?已定义变量h,显示undefined,为何?

来源:4-10 编程练习

大只茹

2016-05-31 11:09


<!DOCTYPE  HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
<script type="text/javascript">



//第一步把之前的数据写成一个数组的形式,定义变量为 infos
var infos=[ ['小A','女',21,'大一'],  ['小B','男',23,'大三'],

   ['小C','男',24,'大四'],  ['小D','女',21,'大一'],

   ['小E','女',22,'大四'],  ['小F','男',21,'大一'],

   ['小G','女',22,'大二'],  ['小H','女',20,'大三'],

   ['小I','女',20,'大一'],  ['小J','男',20,'大三']]

//第一次筛选,找出都是大一的信息
var infos1=new Array();
var infos2=new Array();
for(var i=0,h=0;i<infos.length;i++)
{
   for(var j=0;j<infos[0].length;j++)
   {    
       if(infos[i][j]=='大一')
       {  
             
           infos1[h]=infos[i];//这样赋值不可以吗?
           document.write(infos1[h]+"<br>");
          /* infos1.push(infos[i]);
           document.write(infos1[h]+"<br>");//屏蔽infos1[h]=infos[i],下面句子中h显示undefined,怎么回事?*/
       }
       else
       {
          continue;
       }
   }
 
}
document.write(infos1+"<br>");//为什么显示不出这个数组?
document.write(infos1.length+"<br>"); //为什么结果显示为1?
//第二次筛选,找出都是女生的信息  
for(var i=0,h=0;i<infos1.length;i++)
{
   for(var j=0;j<infos1[0].length;j++)
   {    
       if(infos1[i][j]=='女')
       {  
             
           infos2[h]=infos1[i];
          document.write(infos2[h][0]+"<br>");
       
       }
       else
       {
          continue;
       }
   }
 
}
</script>
</head>
<body>
</body>
</html>




写回答 关注

3回答

  • kuban
    2016-05-31 11:43:02
    已采纳

    你h忘记自加了

    infos1[h]=infos[i];
    document.write(infos1[h]+"<br>");
    h++;

    kuban 回复大只茹

    这个undefined是指infos1[0]的值由于空值返回的undefined,不是未定义,未定义的直接就报错停止啥都不输出了,不信你把h换成a试试

    2016-05-31 17:50:49

    共 3 条回复 >

  • Lucifer_竹岚
    2016-05-31 11:31:08

    然后你这代码实在是乱的可以,没法帮你改,建议你从新写;

    <script type="text/javascript">


     //第一步把之前的数据写成一个数组的形式,定义变量为 infos

    var infos=[["小a","女",21,"大一"],["小b","女",21,"大一"],["小c","女",21,"大一"],["小d","女",21,"大一"],["小e","女",21,"大一"],["小f","女",21,"大一"],["小g","女",21,"大一"],["小h","女",21,"大一"],["小i","女",21,"大一"],["小j","女",21,"大一"]];

     //第一次筛选,找出都是大一的信息

     for(var i=0;i<infos.length;i++){

         var jr=infos[i][3];

         var wx=infos[i][1];

         if(wx=="女" && jr=="大一"){

             document.write(infos[i]+"<br/>");

         }

     } 

    </script>

    我数组里的信息是复制的一样的,因为怕麻烦,但是结果是对的,自己看看吧

    大只茹

    非常感谢,代码我看到了,非常简单,但是上面的代码虽然乱,是我自己写的,碰到很多的问题,所以想解决~

    2016-05-31 17:04:41

    共 1 条回复 >

  • Lucifer_竹岚
    2016-05-31 11:26:56

    首先第一个问题,你定义数组应该用大括号,而不是中括号

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468194 学习 · 21891 问题

查看课程

相似问题