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

声明的一维数组怎么变成了二维数组

 for (var i=0;i<infos.length;i++)
 {var arry1=[];
  var n=0;
     if(infos[i][3]=="大一")
     {
      arry1[n]=infos[i];
      document.write(arry1[n]+"<br>");
      n++;
      }
  }

这里的arry1明明是一维数组,却可以被二维数组infos赋值,这是一维变二维的另一种方式?


正在回答

3 回答

这段程序是明显错的。

首先,你在for循环里定义数组array1=[]和n=0;这样做的结果是,每进行一次for循环,数组1都会被清空,永远都是0,你即使在后面往数组里添加再多东西,n变成任意一个值,在下个for循环下统统都会被清空。这是一个问题。

然后,当你   if(infos[i][3]=="大一") 这个语句如果成立进入if,让一维数组[0]=二维数组[0],这是允许的,infos[i]代表infos数组第i行的全部元素,赋给一维数组后,一维数组就变成一个既有二维数组,又有一维元素的数组,就像这个:array=[ [1,2,3,4],1,2,3 ];

再然后,你执行了document.write(arry1[n]+"<br>"),这个方法的作用是,向网页文档中输出一段文字,这个时候整个网页就只剩下 “arry1[n]+"<br>"“这一段字,然后整个页面会因为执行了这个方法而被刷新,然后你这个for循环就没用了,因为页面被刷新了。

最后,你n++了也没有,因为上面说了,你每进入一次for循环,n都会被重新赋值等于0;

===================================

所以建议你把var arry1=[]; var n=0;写在for循环外,然后不要使用docuement.write方法。可以在网页里写一个<p>标签,用p.innerHTML="XXXX"的方法把字符串写入P标签中,这样就不会因为网页被刷新而时for循环被中断。



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

我不想就这样 提问者

这样我就明白了,还有谢谢,谢谢!!!
2016-07-21 回复 有任何疑惑可以回复我~

你的 infos[i]是一个一维数组  你把这一组的数值都给了arry1 就是两个一维数组的赋值

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

我不想就这样 提问者

不不不,你看这后面的代码 for(var i=0;i<arr1.length;i++){ //这里可以用switch if(arr1[i][1]=='女') { document.write(arr1[i][0]+"<br/>");} } 这里答案后面直接拿来当二维数组用的
2016-07-21 回复 有任何疑惑可以回复我~

infos[i];它是('小I','女',20,'大一'),

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

我不想就这样 提问者

那你的意思是,在这 arry1还是一维数组?
2016-07-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468188    人
  • 解答问题       21891    个

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

进入课程

声明的一维数组怎么变成了二维数组

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