js 数组的 创建 操作 遍历 排序

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>

//---------------------------- 数组的创建 方式-------------------------------
    //理解:数组就是一个容器 装数据用的 通过角标来获取对应位置的值
    //定义1(字面量定义)
    var array1 = [1,2,3];//数组长度是3 重0角标开始
    var array2 = [];
    console.log(typeof array1);  //object
    console.log(array1); //[1,2,3]

    //定义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); //后面定义的变量会覆盖前面的 Array(3) 是数组的长度是3 没有值


//---------------------------- 数组的操作 --------------------------

    var arr = ["刘备","关羽","张飞"];
    //数组长度
    console.log(arr.length);

    //通过索引值获取元素。
    console.log(arr[0]); //刘备
    console.log(arr[1]); //关羽
    console.log(arr[1222]); //由于arr没有这么大的角标 所以undefined

    //通过索引值,给元素赋值
    arr[0] = "韩信";
    arr[1] = "萧何";
    arr[2] = "张良";

    console.log(arr[0]); //韩信
    console.log(arr[1]); //萧何
    console.log(arr[2]); //张良

//---------------------------- 数组的遍历操作 -----------------------------

    //1-10之间能被3整数的数字,存到数组中
    //数组长度本身开始的时候是0,紧接着每添加进去一个值,数组长度自增1;
    //新的变量j可以用,arr.length替代,因为初始化值也是0,每添加一个元素也是自增1.
    var arr4 = [];
    for(var i=1;i<=10;i++){
        if(i%3===0){
            arr4[arr4.length] = i;
        }
    }
    console.log(arr4);

    //将字符串数组用|或其他符号分割 不该遍老数组
    var arr5 = ["吕超","赵云","典韦","关羽","马超","张飞"];
    var str = arr5[0];
    var separator = "|";
    for(var i=1;i<arr5.length;i++){
        str += separator+ arr5[i];
    }
    console.log(str);

    //数组翻转  1.操作原数组,让原数组第一位和最后一个位调换位置,以此类推
    var arr6 = ["刘备","关羽","张飞","诸葛亮","马超","黄忠","姜维"];
    for(var i=0;i<arr6.length/2;i++){
        //让前后数组中的元素交换位置。
        var temp = arr6[i];
        //前面项和对应的后面项交换位置。(arr.length-1-i = 倒数第i+1项)
        arr6[i] = arr[arr6.length-1-i];
        arr6[arr6.length-1-i] = temp;
    }
    console.log(arr6);


//---------------------------- 冒泡排序 ---------------------------------
    //简单版
    var arr7 = [7,6,5,4,3,2,1];
    console.log("为排序的arr7:"+arr7);
        for(var i=0;i<arr7.length-1;i++){
            //2.指定轮数和次数(内循环控制次数)
            for(var j=0;j<arr7.length-1;j++){
                //3.判断是否符合标准。如果符合标准交换位置。
                //从小到大排列顺续,如果前面的比后面的大,那么交换位置。
                if(arr7[j] > arr7[j+1]){
                    var temp = arr7[j];
                    arr7[j] = arr7[j+1];
                    arr7[j+1] = temp;
                }
            }
        }
    console.log("排序后的arr7:"+arr7);

    //中级版
    //每轮比较少比较一次。(每一轮都会比较出一个最大值,然后后一轮没有必要再比较了,
    //所以没比较一轮,就少比较一次。。。)
    var arr8 = [98,7,6,5,4,3,2,1];
        console.log("排序前的arr8:"+arr8);
        var m = 0;
        var n = 0;
        for(var i=0;i<arr8.length-1;i++){
            for(var j=0;j<arr8.length-1-i;j++){
                if(arr8[j] > arr8[j+1]){
                    var temp = arr8[j];
                    arr8[j] = arr8[j+1];
                    arr8[j+1] = temp;
                }
                m++;
            }
            n++;
        }
    console.log("排序后的arr8:"+arr8+"m: "+m+" n: "+n);


    //最终版
    //如果比较完备提前结束比较。(判断,如果本次比较没有移动任何元素,那么说明已经比较完成)
    var arr9 = [33,21,90,1, 2, 3, 4, 5, 6, 7];
    console.log("排序前的arr9:"+arr9);
        var m = 0;
        var n = 0;
        for(var i=0;i<arr9.length-1;i++){
            //开闭原则。(写在第一个for循环里,是为了,每轮比较初始化bool变量变为true。)
            var bool = true;
            //2.指定轮数和次数(内循环控制次数)
            for(var j=0;j<arr9.length-1-i;j++){
                //3.判断是否符合标准。如果符合标准交换位置。
                //从小到大排列顺滑,如果前面的比后面的大,那么交换位置。
                if(arr9[j] > arr9[j+1]){
                    var temp = arr9[j];
                    arr9[j] = arr9[j+1];
                    arr9[j+1] = temp;
                    bool = false;
                }
                m++;
            }
            n++;
            //bool这个变量默认值为true;如果本轮比较有一对元素相互交换位置,那么也不能跳出循环。
            //但是,如果本轮比较没有任何元素相互交换位置,那么说明已经比较完成,可以跳出循环。
            if(bool){
                break;
            }
        }
    console.log("排序后的arr9:"+arr9+"m: "+m+" n: "+n);
    
</script>
</body>
</html>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值