XIN'BOLG

导航

4月5日--数组

  1、数组的创建标准方式:

   数组没有参数时:表示初始容量为0
   如:var arr0=new Array();

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组的创建</title>
    <script type="text/javascript">
    // 仅有一个number类型的参数:表示初始容量
        var arr=new Array(10);
        // console.log(arr);
        arr[0]=2;
        arr[3]=5;
        arr[9]=10;
        // console.log(arr);

    // 仅有一个非number类型的参数:表示初始数据
    var ttt=new Array("10");

    // 有不止一个参数:表示初始数据
    var eee=new Array(1,2,4,7,3);
    // console.log(eee);

    // 简化方式1:省略new关键字
    var a=Array(10);
    // console.log(a);

    // 简化方式2:只能用于初始数据,不适用于初始容量
    var b=[5.8];//
    console.log(b);
    </script>
</head>
<body>
    
</body>
</html>

  2、数组的使用:

  输入一组数,输入end表示结束

  输出数组之和,平均数,最大数,最小数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组的使用</title>
    <script type="text/javascript">

    var scores=[];    
    do{
        var n=prompt("请输入(end表示结束):");
        if(n=="end"){
            break;
        }
        scores[scores.length]=n*1;
    }while(true);
    
    var sum=0;
    var maxScore=scores[0];
    var minScore=scores[0];
    for(var i=0;i<scores.length;i++){
        sum+=scores[i];
        if(maxScore<scores[i]){
            maxScore=scores[i];
        }
        if(minScore>scores[i]){
            minScore=scores[i];
        }
    }
    console.log('sum='+sum);
    console.log('avg='+sum/scores.length);
    console.log('max='+maxScore);
    console.log('min='+minScore);
    </script>
</head>
<body>
    
</body>
</html>

   3、数组的类型

     数组类型1:数值索引数组

     数组类型2:字符串索引数组

      输出数据的类型

      //var arr=new Array(4);

      // for(var i=0;i<arr.length;i++){
      // console.log('数据是:'+arr[i]+",类型是:"+typeof arr[i])
      // }

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组的类型</title>
    <script type="text/javascript">
        // 数组中数据的类型
        //数组类型1:数值索引数组
        // var arr=new Array(4);
        // arr[0]=100;
        // arr[1]="Hello";
        // arr[3]=true;
        // arr[5]=function(){};
        // for(var i=0;i<arr.length;i++){
        //     console.log('数据是:'+arr[i]+",类型是:"+typeof arr[i])
        // }

        //数组类型2:字符串索引数组
        var arr=new Array(2);
        arr["name"]="mike";
        arr["age"]=20;
        arr["gender"]="male";
        arr["8.5"]="133123455";
        console.log(arr);
    </script>
</head>
<body>
    
</body>
</html>

  4、数组的遍历:

    定长for循环:对于未定义的数组会出现undefined

    迭代for循环:对于未定义的数组直接跳过不显示(字符串索引的数组只能用迭代for循环)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组的遍历</title>
    <script type="text/javascript">
        //数值索引数组既可以使用定长for也可以使用迭代for
        // 区别在于,迭代for会跳过未赋值数据单元
        var arr=new Array(5);
        arr[0]=100;
        arr[2]=20;
        arr[4]=300;
        // 定长for循环
        for(var i=0;i<arr.length;i++)
        {
            console.log('arr['+i+']='+arr[i]);
        }
        // 迭代for循环
        for(var i in arr){
            console.log('arr['+i+']='+arr[i]);
        }

        console.log('-------');
        //字符串索引数组:只能使用迭代for循环
        arr=new Array();
        arr["name"]="mike";
        arr["age"]=20;
        arr["gender"]="male";
        arr["phone"]="133123455";
        for(var i in arr){
            console.log('arr['+i+']='+arr[i]);
        }
        
    </script>
</head>
<body>
    
</body>
</html>

  5、数组的排序:

    arr.sort();//数组的排序是默认按照ASCII表进行排序

    var nums=[100,34,67,23,19];
    nums.sort();// 将数值转为字符串后再排序

    如果想改变比较规则,为sort添加一个回调函数作为参数

    nums.sort(compNum);
    console.log(nums);
    function compNum(a,b) {
    return a-b;     //a>b升序a<b降序
    }

    

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组的排序</title>
    <script type="text/javascript">
        var arr=["mike","andy","jerry","tommy","john","Tom"];
        console.log(arr);
        //sort默认按照字符串(ASCII)进行排序
        arr.sort();
        console.log(arr);
        var nums=[100,34,67,23,19];
        // 将数值转为字符串后再排序
        nums.sort();
        console.log(nums);
        // 如果想改变比较规则,为sort添加一个回调函数作为参数
        nums.sort(compNum);
        console.log(nums);
        function compNum(a,b) {
            return a-b;
        }
        console.log('================');
        //自定义排序规则:比较一组字符串的,要求首先按照字符串长度(也是length属性)比较,长度相同再按照ASCII比较
        arr=["mike","andy","jim","jerry","tommy","john","tom"];
        arr.sort(compLength);
        console.log(arr);
        function compLength (a,b) {
            var diff=a.length-b.length;
            if(diff==0){
                return a>b?1:0;
            }
            return diff;
        }

    </script>
</head>
<body>
    
</body>
</html>

  7、数组的其它方法:

    数组的正序:nums.sort(compNum);

          function compNum(a,b) {
          return a-b;
          }

    数组的反转:nums.reverse();

    nums=[];
    nums.push(20);//相当于:nums[nums.length]=20;

    var ret=nums.pop()//相当于var ret=nums[nums.length-1];nums.length--;

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组的其它方法1</title>
    <script type="text/javascript">        
        var nums=[100,34,67,23,19];
        // 将数值转为字符串后再排序        
        nums.sort(compNum);
        function compNum(a,b) {
            return a-b;
        }
        console.log(nums);
        console.log('================');
        // 反转:reverse
        nums.reverse();
        console.log(nums);
        
        nums=[];
        console.log(nums.length);
        nums.push(20);//相当于:nums[nums.length]=XXX;
        nums.push(30);
        nums.push(40);
        console.log('================');
        console.log(nums);
        console.log(nums.length);
        console.log('================');

        //弹出数据
        // var ret=nums.pop();//相当于:
        var ret=nums[nums.length-1];
        nums.length--;
        console.log(ret);
        console.log(nums);

    </script>
</head>
<body>
    
</body>
</html>

 

    

posted on 2017-04-07 15:55  XIN'BOLG  阅读(119)  评论(0编辑  收藏  举报