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

关于第四章编程练习答案的疑问

  var arr1 = []; //新建一个数组的原因是不和infos重合吗?
   var n = 0;  //为什么要声明一个n变量,并且赋值为0?
   for(var i=0;i<infos.length;i++){ 
        if( infos[i][3] == "大一" ){  //infos[i][3]的含义是不是指“数组索引号i与3”?  
           arr1[n] = infos[i];
            document.write(arr1[n]+"<br/>");
           n=n+1;
            
        }  
   }

用注释写在语言里

提问者:大明猩L 2015-10-11 22:37

个回答

  • pardon110
    2015-10-11 23:31:23
    已采纳

    全部js代码与注释如下

    // 第一步把之前的数据写成一个数组的形式,定义变量为 infos
     var infos = [ ['小A','女',21,'大一'],  ['小B','男',23,'大三'],
    
        ['小C','男',24,'大四'],  ['小D','女',21,'大一'],
    
       ['小E','女',22,'大四'], ['小F','男',21,'大一'],
    
        ['小G','女',22,'大二'],  ['小H','女',20,'大三'],
    
        ['小I','女',20,'大一'],  ['小J','男',20,'大三']];
       
     var arr = []; // 定义一个数组
    
    // 第一次筛选,找出都是大一的信息(数组arr1)
      for(var i=0;i<infos.length;i++){ 
           if( infos[i][3] == "大一" ){           // 筛选所有大一学生信息 
              arr.push(infos[i]);                 // 将其置于新数组              
           }  
      }
     // 第二次筛选,找出都是女生的信息(并打印出来)
    for(var i=0; i<arr.length;i++){
      if(arr[i][1] == '女'){                    // 筛选新数组中的所有女生
        document.write(arr[i][0]+"<br/>");       // 打印姓名
      }
    }


  • pardon110
    2015-10-12 08:29:18

    infos[i][3] 是个二维数组, 你可以把它看作是个张Excel表格,其中i决定的是行,3则代表列,整个合起来指向一个单元格。需要注意的是在索引值默认都是从0开始的(这也是n的初始值为什么通常是0的原因),所以这里的3其实就是第4列。至于if中的条件,你需要分析观察infos二维数组内容结构。

    infos二维数组看成表,则表示一个10行4列的表,其中每列依次表示为:姓名,性别,年龄,年级。理解这些,你就可以很清晰的知道infos[i][3]指获取年级。

    若还不能理解,打开Excel表比划比划。不明白if 是你需要加强数组学习。有时候慢就是快……

  • 大明猩L
    2015-10-12 00:28:39

    if中的条件是指的什么意思呢