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

原创 2016年08月28日 21:24:07
<!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>

版权声明:本文为博主原创文章,未经博主允许不得转载。

js中对象属性值排序(字典倒排序)

[TOC] 教女朋友前端js的过程中发现好多书里面都没有讲倒排序,网上搜了也没有,故此新开一文讲一下。sort函数先说一下sort函数:var a=[3,2,5,7,3,6,8,9,1,2]; do...
  • trucyluce
  • trucyluce
  • 2016年03月20日 17:26
  • 17082

js sort方法根据数组中对象的某一个属性值进行排序

var arr = [ {name:'zopp',age:0}, {name:'gpp',age:18}, {name:'yjj',age:8} ];function comp...
  • qq_17335153
  • qq_17335153
  • 2016年09月18日 14:55
  • 10280

js中数组的排序

console.log("------默认排序(ASCII字符排序)------"); var arr = [1,2,55,12,88]; arr.sort(); //ASCII字符代码...
  • hfhwfw
  • hfhwfw
  • 2014年01月06日 23:04
  • 4602

JS数组排序-按照KEY的数字或者ascii码排序

 var eidtionTypeList = [     {key:104212,val:"影刻本"},     {key:104211,val:"翻刻本"},     {key:10421...
  • adparking
  • adparking
  • 2011年05月19日 20:28
  • 5655

js实现两种实用的排序算法——冒泡、快速排序

分享记录两种程序员必备的排序算法:冒泡算法、排序算法,面试日常,很实用!...
  • Loving_M
  • Loving_M
  • 2016年11月01日 10:29
  • 23142

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

//---------------------------- 数组的创建 方式------------------------------- //理解:数组就是一个容器 装数据用的 通过角标来...
  • u011301203
  • u011301203
  • 2016年08月28日 21:24
  • 1484

js中数组的排序

[javascript] view plain copy console.log("------默认排序(ASCII字符排序)------");  var arr = [1,2,55,12,...
  • salonzhou
  • salonzhou
  • 2016年03月04日 12:42
  • 3539

js 创建遍历数组

创建索引数组 var arr = []; for (var i = 1; i < 10 ; i++) { arr.push(i); } co...
  • q601115211
  • q601115211
  • 2016年10月14日 09:36
  • 2959

js数组的操作与遍历

js的数组的操作函数实在是太多了(比C#要多得多),遍历的方法也有好几个,这里有必要自己总结一下: 数组操作 方法描述FFNIEconcat()连接两个或更多的数组,并返回结果。1...
  • dongliang_shali
  • dongliang_shali
  • 2016年01月29日 16:13
  • 3535

JS中给数组对象排序

//JS中给数组对象排序 //假设有一个对象数组,我们想要根据某个对象属性对数组进行排序。而传递给数组sort()方法的比较函数要接收2个参数,即要比较的值。 //可是,我们需要一种方式指明按...
  • github_26672553
  • github_26672553
  • 2015年06月12日 14:56
  • 1035
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js 数组的 创建 操作 遍历 排序
举报原因:
原因补充:

(最多只允许输入30个字)