guozhchun
你想从第一次循环的结果中再次循环得到你想要的结果,那么你必须保留第一循环的结果。在代码中并没有体现出你对第一循环结果的保留。这是逻辑上的错误,以下代码是语法上的错误for(var j=0;j<i.length;j++) // i 不是一个数组,没有i.length,不知你想表达什么意思
if(j[i][1]=="女") // 上一个语句中 j 定义的应该是一个整数,这里却把 j 当成一个数组
{
document.write(j[i][0])
}以下代码是我提供的一个参考样例<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
</head>
<body>
<script type="text/javascript">
var infos=[
['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']
]; //第一步把之前的数据写成一个数组的形式,定义变量为 infos
var temp = []; // 存放大一的信息的数组
var index = 0; // temp数组的下标
document.write("第一次筛选:");
for(var i=0;i<infos.length;i++)
{
if(infos[i][3]=="大一")
{
temp[index] = infos[i]; // 将对应信息放入temp数组中
index++; // 对应下标自增
document.write(infos[i][0]+"、"); //第一次筛选,找出都是大一的信息
}
}
document.write("<br>第二次筛选:");
//第二次筛选,找出都是女生的信息
for (var i = 0; i < index; i++)
{
if (temp[i][1] == "女")
document.write(temp[i][0] + "、");
}
</script>
</body>
</html>当然,如果只是想找出所有的大一女生,有一个更简单直接的方法,对每一个项直接判断是否是大一,是否是女生。参考样例如下<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
</head>
<body>
<script type="text/javascript">
var infos=[
['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']
] //第一步把之前的数据写成一个数组的形式,定义变量为 infos
for(var i = 0; i < infos.length; i++)
{
if((infos[i][3] == "大一") && (infos[i][1] == "女"))
{
document.write(infos[i][0]+"、");
}
}
</script>
</body>
</html>