问答详情
源自:4-10 编程练习

针对非明确索引的二维数组筛选方法解决方案。

//第一步把之前的数据写成一个数组的形式,定义变量为 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()确认结果。


提问者:weixin_慕勒8503657 2020-11-27 17:50

个回答

  • weixin_慕勒8503657
    2020-11-27 17:52:23

    对于明确的知道索引的解决方法就不阐述了,很多人都一部筛选了,这里主要是对非明确索引打乱的二维数组进行筛选的方法。