我不想就这样
2016-07-21 17:34
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赋值,这是一维变二维的另一种方式?
这段程序是明显错的。
首先,你在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循环被中断。
你的 infos[i]是一个一维数组 你把这一组的数值都给了arry1 就是两个一维数组的赋值
infos[i];它是('小I','女',20,'大一'),
JavaScript进阶篇
468060 学习 · 21891 问题
相似问题