zoukankan      html  css  js  c++  java
  • JavaScript-----8.数组

    1.数组的概念

    数组是指一组数据的集合,其中每个数据被称为元素,在数组中可以存放任意类型的元素

    2. 创建数组

    创建数组的两种方式:

    • 利用new创建数组
    • 利用数组字面量创建数组(最常用)

    2.1 利用new创建数组

    var arr = new Array();//创建了一个空的数组
    

    2.2 利用数组字面量创建数组[]

    数组字面量是[]

    var arr = []; //利用数组字面量创建了一个空的数组
    var arr1 = [1, 2, 'pink老师', true]; //数组里面的数据要用逗号分隔开
    

    3.获取数组中的元素

    3.1数组的索引

    索引(下标):用来访问数组元素的序号,下标从0开始。格式:数组名[索引]

    var arr1 = [1, 2, 'pink老师', true];
    console.log(arr1);//(4) [1, 2, "pink老师", true]
    console.log(arr1[2]);//pink老师
    
    var arr2 = ['古力娜扎', '迪丽热巴', '佟丽娅'];
    console.log(arr2[0]); //古力娜扎
    console.log(arr2[1]); //迪丽热巴
    console.log(arr2[2]); //佟丽娅
    console.log(arr2[3]); //undefined
    

    4.遍历数组

    var arr = ['red', 'green', 'blue'];
    for (var i = 0; i < 3; i++) {
        console.log(arr[i]);
    }
    

    4.1 数组的长度

    格式:数组名.length

    var arr = ['关羽', '张飞', '马超', '赵云', '黄忠', '刘备', '姜维'];
    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i]);
    }
    

    案例:求数组的所有数的平均值以及和

    var arr = [2, 6, 1, 7, 4];
    var sum = 0;
    var aver;
    for (var i = 0; i < arr.length; i++) {
        sum = sum + arr[i];
    }
    aver = sum / arr.length;
    console.log(sum);
    console.log(aver);
    

    案例:求数组中的最大值

    var arr = ['2', '6', '1', '77', '53', '25', '7'];
    var max_num = arr[0];
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] > max_num) {
            max_num = arr[i];
        }
    }
    console.log(max_num);
    

    案例:把数组转化为字符串

    var arr = ['red', 'green', 'blue', 'pink'];
    var str = '';
    var sep = '*';
    for (var i = 0; i < arr.length; i++) {
        str = str + arr[i] + sep;
    }
    console.log(str);
    

    5.数组中新增元素

    现阶段的方法:通过修改length长度以及索引号增加数组元素

    5.1通过修改length长度新增数组元素

    length属性是可读写的

    var arr = ['red', 'green', 'blue'];
    console.log(arr.length); //3
    arr.length = 5; //将数组的长度修改为5,里面应该有5个元素
    console.log(arr); //(5) ["red", "green", "blue", empty × 2]
    console.log(arr[3]); //undefined
    console.log(arr[4]); //undefined
    

    这样就实现了数组的扩容

    5.2通过修改数组索引增数组元素

    在上述扩容的基础上

    arr[3] = 'pink';
    console.log(arr); //(5) ["red", "green", "blue", "pink", empty]
    arr[4] = 'hotpink';
    console.log(arr); //(5) ["red", "green", "blue", "pink", "hotpink"]
    

    这样就实现了数组元素的追加,在上述的基础上,如果索引号是之前已经有的,那么将实现元素的替换,如下所示:

    arr[0] = 'yellow';
    console.log(arr);//(5) ["yellow", "green", "blue", "pink", "hotpink"]
    

    同时注意:不要给数组名赋值,否则里面的数据全部都没有啦!

    arr = '有点意思';
    console.log(arr);//有点意思
    

    案例:将1~10存到数组中

    var arr = [];
    var num = 10;
    for (var i = 0; i < num; i++) {
        arr[i] = i + 1;
    }
    console.log(arr);
    

    案例:筛选数组
    要求将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10的元素选出来,放入新的数组
    方法1:

    var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
    var arr1 = [];
    var j = 0;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] >= 10) {
            arr1[j++] = arr[i];
        }
    }
    console.log(arr1);//(3) [77, 52, 25]
    

    方法2:

    var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
    var arr1 = [];
    //var j = 0;
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] >= 10) {
            arr1[arr1.length] = arr[i];
        }
    }
    console.log(arr1); //(3) [77, 52, 25]
    

    6.数组案例

    6.1删除指定的数组元素

    要求:将数组[2,0,6,1,77,0,52,0,25,7]中的0去掉,形成一个不包含0的新数组

    var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
    var arr2 = [];
    for (var i = 0; i < arr1.length; i++) {
        if (arr1[i] != 0) {
            arr2[arr2.length] = arr1[i]; //(7) [2, 6, 1, 77, 52, 25, 7]
        }
    }
    

    6.2翻转数组

    要求:将数组['red','green','blue','pink','purple']的内容反过来存放,输出['purple','pink','blue','green','red']

    //方法1:
    var arr1 = ['red', 'green', 'blue', 'pink', 'purple'];
    var arr2 = [];
    for (var i = 0; i < arr1.length; i++) {
        arr2[i] = arr1[arr1.length - -1 - i];
    }
    console.log(arr2);//(5) ["purple", "pink", "blue", "green", "red"]
    
    //方法2:
    var arr1 = ['red', 'green', 'blue', 'pink', 'purple'];
    var arr2 = [];
    for (var i = arr1.length - 1; i >= 0; i--) {
        arr2[arr2.length] = arr1[i];
    }
    console.log(arr2);//(5) ["purple", "pink", "blue", "green", "red"]
    

    6.3冒泡排序

    原理:是一种算法,把一系列的数据按照一定的顺序按照从小到大的顺序进行排列。一次比较两个元素如果它们顺序错误就把它们交换过来。

    //冒泡排序  对n(8)个数进行排序
    //对于从小到大排列的情况。(3,1,7,8,3,2,9,5)
    //第一趟i=0排序会把最大的数9放在最后的位置,之后就不管9了(1 3 7 3 2 8 5 ||9)比较了n-1(7)次
    //第二趟i=1排序会把第二大的数8放在正确的位置,之后就不管8了 得到(1 3 3 2 7 5|| 8 9)比较了n-2(6)次
    //第三趟i=2排序会把第三大的数7放在正确的位置,之后就不管7了 得到(1 3 2 3 5 ||7 8 9)比较了n-3(5)次
    //第四趟i=3排序会把第四大的数5放在正确的位置,之后就不管5了 得到(1 2 3 3||5 7 8 9)比较了n-4(4)次
    //第五趟i=4排序会把第五大的数3放在正确的位置,之后就不管3了 得到(1 2 3||3 5 7 8 9)比较了n-5(3)次
    //第六趟i=5排序后(1 2 ||3 3 5 7 8 9)比较了n-6(2)次
    //第七趟i=6排序后(1||2 3 3 5 7 8 9)比较了n-7(1)次
    var a = ['3', '1', '7', '8', '3', '2', '9', '5'];
    var n = a.length; //n-1就是趟数
    var temp;
    for (var i = 0; i < n; i++) {
        for (var j = 0; j < n - 1 - i; j++) {
            if (a[j] > a[j + 1]) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    console.log(a); //(8) ["1", "2", "3", "3", "5", "7", "8", "9"]
    

    6.4选择排序

    第一次从下标为0的开始下标为0的这个数与后面的n-1个进行比较;找出最小或者最大的放在下标为0的这个位置;第二次从下标为1的开始比较;查询剩下的最大或者最小值;放在下标为1的位置;以此类推;直到排序完成。

    //选择排序
    var arr1 = ['3', '1', '7', '8', '3', '2', '9', '5'];
    var temp;
    for (i = 0; i < 4; i++) { //外层for循环确定交换的轮数
        for (j = i + 1; j < 5; j++) {
            if (arr1[i] > arr1[j]) {
                temp = arr1[i];
                arr1[i] = arr1[j];
                arr1[j] = temp;
            }
        }
    }
    console.log(arr1); //(8) ["1", "2", "3", "3", "5", "7", "8", "9"]
    
  • 相关阅读:
    JAVA-AbstractQueuedSynchronizer-AQS
    线程封闭
    安全发布对象
    JAVA并发基础
    C#JsonConvert.DeserializeObject反序列化json字符
    Java并发容器
    JAVA简易数据连接池Condition
    Java线程读写锁
    JDK提供的原子类和AbstractQueuedSynchronizer(AQS)
    协方差矩阵分解的物理意义
  • 原文地址:https://www.cnblogs.com/deer-cen/p/12015051.html
Copyright © 2011-2022 走看看