zoukankan      html  css  js  c++  java
  • 数组

    一、数组的定义和概念

    <script>
    
        //定义1(字面量定义)
        var array1 = [1,2,3];
        var array2 = [];
        console.log(typeof array1);
        console.log(array1);
    
    
        //定义2(对象创建)
        var arr1 = new Array(); //空数组
        var arr2 = new Array("关羽","张飞","刘备");
        var arr3 = new Array(1,2,3);
        var arr3 = new Array(3);
        console.log(arr1);
        console.log(arr2);
        console.log(arr3);
    
    
    
    </script>
    View Code

    二、数组的操作

     var arr = ["刘备","关羽","张飞"];
    
        //数组长度
    //    console.log(arr);
    //    console.log(arr.length);
    
        //通过索引值获取元素。
        console.log(arr[0]);
        console.log(arr[1]);
        console.log(arr[2]);
        console.log(arr[1222]);
    
        //通过索引值,给元素赋值
        arr[0] = "韩信";
        arr[1] = "萧何";
        arr[2] = "张良";
    
        console.log(arr[0]);
        console.log(arr[1]);
        console.log(arr[2]);
    View Code

    三、数组的遍历

      var arr = ["关羽","张飞","赵云","马超","黄忠"];
    
        //遍历数组就是循环(获取)数组中的每一项
        for(var i=0;i<arr.length;i++){
            //代表的是数组中的每一个元素;
    //        arr[i]
            console.log(arr[i]);
        }
    View Code

    四、数组案例

      //把1-10之间所有的奇数,放到数组中
        //有问题,索引值不是挨着的,而且不是从0开始。
    //    var arr1 = [];
    //
    //    for(var i=1;i<=10;i++){
    //        if(i%2!==0){
    //            arr1[i] = i;
    //        }
    //    }
    //
    //    console.log(arr1);
    
        //重新定义变量作为数组的索引值使用
    //    var arr1 = [];
    //    var j = 0;
    //    for(var i=1;i<=10;i++){
    //        if(i%2!==0){
    //            arr1[j] = i;
    //            j++;
    //        }
    //    }
    //    console.log(arr1);
    
        //数组长度本身开始的时候是0,紧接着每添加进去一个值,数组长度自增1;
        //新的变量j可以用,arr.length替代,因为初始化值也是0,每添加一个元素也是自增1.
        var arr = [];
        for(var i=1;i<=10;i++){
            if(i%2!==0){
                arr[arr.length] = i;
            }
        }
        console.log(arr);
    
    
        //1-10之间能被3整数的数字,存到数组中
        //数组的长度刚好可以作为数组中下一个元素的索引值。
        var arr2 = [];
        for(var i=1;i<=10;i++){
            if(i%3===0){
                arr2[arr2.length] = i;
            }
        }
        console.log(arr2);
    
    #数组大案例
    
       //一、求一组数中的所有数的和和平均值
    //   var arr = [10,20,30];
    //   //计数器思想
    //   var sum = 0;
    //   for(var i=0;i<arr.length;i++){
    //       sum += arr[i];
    //   }
    //   console.log(sum);
    //   var avg = sum/arr.length;
    //   console.log(avg);
    
       //二、求一组数中的最大值和最小值,以及所在位置
        //预热案例:求最大值
    //   var arr = [-10,20,-30,0];
    //   //必须使用数组中的值。(最好是第一个或者最后一个,可以少比较一次)
    ////   var max = 0;
    //   var max = arr[0];
    //   for(var i=1;i<arr.length;i++){
    //       //遍历数组,判断数组中的每一项,如果比max大,赋值给max,否则不用管
    //       if(arr[i]>max){
    //           max = arr[i];
    //       }
    //   }
    //   alert(max);
    
    //    var arr = [10,-20,30,40];
    //   //定义一个最大值和一个最小值,把他们的索引值赋值给固定的两个变量
    //    var maxValue = arr[0];
    //    var minValue = arr[0];
    //    var maxIndex = 0;
    //    var minIndex = 0;
    //
    //    for(var i=1;i<arr.length;i++){
    //        //如果数组中的元素大于我们定义的最大值
    //        if(arr[i]>maxValue) {
    //            //把这个元素赋值给最大值,把他对应的索引值,赋值给maxIndex
    //            maxValue = arr[i];
    //            maxIndex = i;
    //        }
    //      //如果数组中的元素小于我们定义的最小值
    //        if(arr[i]<minValue){
    //            //把这个元素赋值给最小值,把他对应的索引值,minIndex
    //            minValue = arr[i];
    //            minIndex = i;
    //        }
    //    }
    //    console.log(maxValue);
    //    console.log(maxIndex);
    //    console.log(minValue);
    //    console.log(minIndex);
    
       //三、将字符串数组用|或其他符号分割
    //    var arr = ["吕超","赵云","典韦","关羽","马超","张飞"];
    //    var str = arr[0];
    //    var separator = "|";
    //   //为了避免第一个名字前有|,把第一个名字从数组中取出,赋值给str,然后在链接其他名字。
    //    for(var i=1;i<arr.length;i++){
    //        str += separator+ arr[i];
    //    }
    //    console.log(str);
    
    
        //四、将数组中值为0的去掉,不为0的存入一个新数组
    //    var arr = [0,"刘备",0,"关羽",0,"张飞",0];
    //    var newArr = [];
    //    for(var i=0;i<arr.length;i++){
    //        //判断,如果不是0,放入新数组
    //        if(arr[i] !== 0){
    //            newArr[newArr.length] = arr[i];
    //        }
    //    }
    //    console.log(newArr);
    
    
        //五、翻转数组
       //思路:实现方法:1.定义一个新数组,把老数组中的元素从后往前添加到新数组中。
       //思路:实现方法:1.操作原数组,让原数组第一位和最后一个位调换位置,以此类推。
        var arr = ["刘备","关羽","张飞","诸葛亮","马超","黄忠","姜维"];
        console.log(arr);
       //思路:实现方法:1.定义一个新数组,把老数组中的元素从后往前添加到新数组中。
    //    var newArr = [];
       //复杂版
    //    for(var i=0;i<arr.length;i++){
    //        //用新数组的长度作为索引值。  给定数组的最大索引值,然后-去i,因为i自增所以,获取的将是最大索引值到0;
    //        newArr[newArr.length] = arr[arr.length-1-i];
    //    }
    //    console.log(newArr);
       //简单版
    //   for(var i=arr.length-1;i>=0;i--){
    //       //用新数组的长度作为索引值。  给定数组的最大索引值,然后-去i,因为i自增所以,获取的将是最大索引值到0;
    //       newArr[newArr.length] = arr[i];
    //   }
    //   console.log(newArr);
    
       //思路:实现方法:1.操作原数组,让原数组第一位和最后一个位调换位置,以此类推。
        for(var i=0;i<arr.length/2;i++){
            //让前后数组中的元素交换位置。
            var temp = arr[i];
            //前面项和对应的后面项交换位置。(arr.length-1-i = 倒数第i+1项)
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = temp;
        }
    
        console.log(arr);
    View Code

    五、冒泡排序

    1.简单版

    #冒泡排序简单版
        var arr = [7,6,5,4,3,2,1];
        //需求:冒泡排序。
        //理论:1.比较轮数n-1。  2.比较次数n-1。  3.符合某个条件交换位置。
        //核心:双重for循环。
        //步骤:
        //1.双重for循环。
        //2.指定轮数和次数
        //3.判断是否符合标准。如果符合标准交换位置。
        console.log(arr);
    
    
        //1.双重for循环。(外循环控制轮数)
        for(var i=0;i<arr.length-1;i++){
            //2.指定轮数和次数(内循环控制次数)
            for(var j=0;j<arr.length-1;j++){
                //3.判断是否符合标准。如果符合标准交换位置。
                    //从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
                if(arr[j] > arr[j+1]){
                    var temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    
        console.log(arr);
    View Code

    2.中级版

     var arr = [7,6,5,4,3,2,1];
        //需求:冒泡排序。
        //理论:1.比较轮数n-1。  2.比较次数n-1。  3.符合某个条件交换位置。
        //核心:双重for循环。
        //步骤:
        //1.双重for循环。
        //2.指定轮数和次数
        //3.判断是否符合标准。如果符合标准交换位置。
        console.log(arr);
    
        //每轮比较少比较一次。(每一轮都会比较出一个最大值,然后后一轮没有必要再比较了,所以没比较一轮,就少比较一次。。。)
        var m = 0;
        var n = 0;
    
    
        //1.双重for循环。(外循环控制轮数)
        for(var i=0;i<arr.length-1;i++){
            //2.指定轮数和次数(内循环控制次数)
            for(var j=0;j<arr.length-1-i;j++){
                //3.判断是否符合标准。如果符合标准交换位置。
                    //从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
                if(arr[j] > arr[j+1]){
                    var temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
                m++;
            }
            n++;
        }
    
        console.log(arr);
        console.log(m);
        console.log(n);
    View Code

    3.终极版

    //    var arr = [7,6,5,4,3,2,1];
        var arr = [1, 2, 3, 4, 5, 6, 7];
        //需求:冒泡排序。
        //理论:1.比较轮数n-1。  2.比较次数n-1。  3.符合某个条件交换位置。
        //核心:双重for循环。
        //步骤:
        //1.双重for循环。
        //2.指定轮数和次数
        //3.判断是否符合标准。如果符合标准交换位置。
        console.log(arr);
    
        //如果比较完备提前结束比较。(判断,如果本次比较没有移动任何元素,那么说明已经比较完成)
        var m = 0;
        var n = 0;
    
    
        //1.双重for循环。(外循环控制轮数)
        for(var i=0;i<arr.length-1;i++){
            //开闭原则。(写在第一个for循环里,是为了,每轮比较初始化bool变量变为true。)
            var bool = true;
            //2.指定轮数和次数(内循环控制次数)
            for(var j=0;j<arr.length-1-i;j++){
                //3.判断是否符合标准。如果符合标准交换位置。
                    //从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
                if(arr[j] > arr[j+1]){
                    var temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    bool = false;
                }
                m++;
            }
            n++;
            //bool这个变量默认值为true;如果本轮比较有一对元素相互交换位置,那么也不能跳出循环。
            //但是,如果本轮比较没有任何元素相互交换位置,那么说明已经比较完成,可以跳出循环。
            if(bool){
                break;
            }
        }
    
        console.log(arr);
        console.log(m);
        console.log(n);
    View Code
  • 相关阅读:
    圣诞树
    删除临时表并且插入数据
    sql语句中查询用in的时候,按in的顺序来输出
    xmlhelper and excelhelper
    几个小知识点。
    根据页面上记录数和页面大小获取总页数
    SQL语句的疑问
    katie melua the closest thing to crazy
    something about table
    little things
  • 原文地址:https://www.cnblogs.com/knighterrant/p/9428020.html
Copyright © 2011-2022 走看看