针对非明确索引的二维数组筛选方法解决方案。
//第一步把之前的数据写成一个数组的形式,定义变量为 infos
var infos=[
['小A','女',21,'大一'],
['小B','男',23,'大一'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']
];
//为了展示效果,我把数组中的其中一个男生的学历改为大一(原本是没有的大一的男生)。
var sx1=[];//新建数组存储第一次筛选的结果
//第一次筛选,找出都是大一的信息
var len=infos.length;//得到每个一维数组长度;
//console.log("一维数组的长度为:"+len);
for(var i=0; i<len; i++){
var lenTow1=infos[i].length;//得到每个一维数组中所对应的二维数组长度;
//console.log("二维数组的长度为:"+lenTwo);
for(var j=0; j<lenTow1; j++){
if(infos[i][j]=="大一"){//在每个对应的一维数组中筛选出为大一的学生
sx1.push(infos[i]);//将所有二维中为大一的数组添加到新的数组中
}
}
}
//第二次筛选,找出都是女生的信息
var len2=sx1.length;//获取筛选后的新的数组长度
var endInfo="";//声明变量,否则会undefined
var xh=0;//排序用
for(var q=0; q<len2; q++){//遍历一维数组
var lenTow2=sx1[q].length;//获取每个一维数组对应的二维数组的长度
//console.log("新的大一数组:"+sx1[q]);
for(var s=0; s<lenTow2; s++){//遍历每个一维数组对应的二维数组
if(sx1[q][s]=="女"){//找出每个一维数组对应的二维数组里为“女”生的
xh++;//重新排序;
endInfo+="大一女生信息("+xh+"):"+sx1[q]+"<br>";
//将该二维为女的对应的一维数组赋值给前面刚申明的变量
}
}
}
document.write(endInfo);//数据打印结合前面console.log()确认结果。