为了账号安全,请及时绑定邮箱和手机立即绑定

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


<!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 回答

你h忘记自加了

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

0 回复 有任何疑惑可以回复我~
#1

kuban

只有h没自加的问题,自加后你注释的也正确执行,没有错误的
2016-05-31 回复 有任何疑惑可以回复我~
#2

大只茹 提问者

恩,可以啦!不过还有个问题, infos1[h]=infos[i]; document.write(infos1[h]+"<br>"); h++; 删掉infos1[h]=infos[i];直接运行后面的,会出现undefined,可是在一开始的 for(var i=0,h=0;i<infos.length;i++)里面就定义了h啊!
2016-05-31 回复 有任何疑惑可以回复我~
#3

kuban 回复 大只茹 提问者

这个undefined是指infos1[0]的值由于空值返回的undefined,不是未定义,未定义的直接就报错停止啥都不输出了,不信你把h换成a试试
2016-05-31 回复 有任何疑惑可以回复我~

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

<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>

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

0 回复 有任何疑惑可以回复我~
#1

大只茹 提问者

非常感谢,代码我看到了,非常简单,但是上面的代码虽然乱,是我自己写的,碰到很多的问题,所以想解决~
2016-05-31 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信