<script type="text/javascript">
//第一步把之前的数据写成一个数组的形式,定义变量为 infos
var myarray = [['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']];
var arr = new Array();
var i,j;
//第一次筛选,找出都是大一的信息
document.write("大一的有:"+"<br>");
for(i=0;i<myarray.length;i++){
if(myarray[i][3]=='大一'){
arr[j] = myarray[i];
document.write(arr[j]+"<br>");
}
}
document.write("所有是大一女生的名字:"+"<br>");
//第二次筛选,找出都是女生的信息
for(j=0;j<arr.length;j++){
if(arr[j][1]=='女'){
document.write(arr[j]+"<br>");
}
}
</script>
首先:你的问题出在:arr[j] = myarray[i];上,只要有myarray[i]符合条件,arr[j]就会去接收,但j没有实现自 增,所有arr[j]背不断赋予新值,所以最后arr[j]y也只是记录一个值。
其次:你没有给j赋初值,未使用值来声明的变量,其值实际上是 undefined,你可以这样试试看: document.write(arr[j]+"<br>"+j);,看看j是多少。你就会知道,为啥你第二次筛选没有任何内容输出。
正确代码如下,仅代表个人观点,喜欢就好。
//第一次筛选,找出都是大一的信息
var arr=new Array();
var j=0;
for(var i=0;i<infos.length;i++){
if(infos[i][3]=='大一'){
document.write("大一的有:"+infos[i]+"<br>")
arr[j]=infos[i];
j++;
}
}
//第二次筛选,找出都是女生的信息
for(j=0;j<arr.length;j++){
if(arr[j][1]=='女'){
document.write("结果为"+arr[j]+"<br>");
}
}
j没有赋初值和自增,代码有些冗杂。
<script type="text/javascript">
var infos = [
['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']
];
for(var i = 0; i < infos.length; i++) {
if(infos[i][3] == "大一" && infos[i][1] == "女") {
document.write(infos[i][0] + "<br />");
}
}
</script>
for(i=0;i<myarray.length;i++){
if(myarray[i][3]=='大一'){
arr[j] = myarray[i];
document.write(arr[j]+"<br>");
}
}
你这边这个j都没有定义循环
赋值的J没有回归到0,也没有进行累加
j没有初始化和自增
var i,j=0; //第一次筛选,找出都是大一的信息 document.write("大一的有:"+"<br>"); for(i=0;i<myarray.length;i++){ if(myarray[i][3]=='大一'){ arr[j] = myarray[i]; document.write(arr[j]+"<br>"); j++; } }