3<保姆教程>》JavaScript基础(数组)

86 阅读2分钟

JavaScript基础

数组

  1. 是什么
    数组是指一组数据的集合,其中的每一个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的优雅方式
  1. 创建数组的两种方式
    // 利用new创建数组
    var arr = new Array()
    // 利用数组字面量创建数组
    var arr1 = []
    - 上面的两种方法都是创建了一个空数组
    // 为数组赋值
    arr[1] = '元素1'
    arr[2] = '元素2'
    arr[3] = '元素3'
    arr1[1] = '元素1'
    arr1[2] = '元素2'
    arr1[3] = '元素3'
    - 以上的方法都太麻烦了,下面的方法是比较常用的,创建的同时赋值
    var arr2 = ['元素1','元素2','元素3']
  1. 访问数组
    // 数组的索引(下标):用来访问数组元素的序号,从0开始
    var arr = ['元素1', '元素2', '元素3']
    console.log(arr[0]) //元素1
    console.log(arr[1]) //元素2
    console.log(arr[2]) //元素3
    console.log(arr[3]) //undefined, 因为没有这个数组元素
        // for循环遍历数组
    for (var i = 0; i < arr.length; i++) { //arr.length数组的长度
        console.log(arr[i])
    }
  1. 新增数组元素
    // 修改数组length
    var arr = [1, 2, 3]
    arr.length = 5
    console.log(arr) //[1, 2, 3, empty × 2],因为最后新增的两个长度是没有元素的所以显示的是empty
    // 新增数组元素
    var arr1 = [1, 2, 3]
    arr1[3] = '新增1'
    arr1[4] = '新增2'
    console.log(arr1) //[1, 2, 3,'新增1', '新增2']
  1. 案例(1)
    // 求数组里面所以元素相加的和,以及平均值
    var arr = [10, 2, 3, 4, 60, 90];
    var sun = 0; //和的初始值
    var appraise; //保持平均值的变量
    for (var i = 0; i < arr.length; i++) {
        sun += arr[i]
    }
    appraise = sun / arr.length
    console.log(sun) //169
    console.log(appraise); //28.166666666666668
    // 求一组数据中的最大值
    var arr1 = [10, 2, 1, 0, 100, 30, 9]
    var max = arr1[i]; //假设数组中第一个元素的值最大
    for (var i = 1; i < arr1.length; i++) { //因为已经假设第一个元素为最大值的,所以遍历的初始索引可以从1开始
        if (arr[i] > max) {
            //如果还有元素比假设的最大值还大,那么该元素就是新的假设的最大值
            max = arr1[i]
        }
    }
    console.log(max); //100
  1. 案例(2)
    // 把数组中大于10的元素选出来放到新的数组中
    var arr = [1, 20, 31, 9, 5, 2, 10, 32, 11]
    var newArr = []; //创建一个新的数组用来存放大于10的元素
    for (var i = 0; i < arr.length; i++) {
        //对每一个元素继续判断
        if (arr[i] > 10) {
            // 用newArr.length作为新数组的下标,没新增一个元素,newArr.length都会加1,所以刚好是我们想要的
            newArr[newArr.length] = arr[i]
        }
    }
    console.log(newArr); // [20, 31, 32, 11]
    // 翻转数组 [2,3,4,5]=>[5,4,3,2]
    var arr = [2, 3, 4, 5]
    var newArr = []
    for (var i = arr.length - 1; i >= 0; i--) { //我们可以从数组的最后一个开始拿,每次都往新数组里面放
        newArr[newArr.length] = arr[i]
    }
    console.log(newArr); //[5, 4, 3, 2]
  1. 案例(3)
    // 数组冒泡排序(从小到大排序)
   var arr = [2, 131, 123, 1, 3, 0]
        // 分析:
        /* 
            1. 每一个元素都和其他元素比较一次(不重复比较) 得:
            2->131,2->123,2->1,2->3,2->0    第一轮比较了5次
            131->123,131->1,131->3,131->0   第二轮比较了4次
            123->1,123->3,123->0            第三轮比较了3次
            1->3,1->0                       第二轮比较了2次
            3->0                            第四轮比较了1次
            再得:
            外层循环为比较的轮数,为arr.lenght-1
            内循环为没一轮比较的次数,每次都会递减1,所以有以下代码
        */
    for (var i = 0; i < arr.length - 1; i++) {
        for (var j = 0; j < arr.length - 1 - i; j++) {
            let tep = null
            if (arr[j] > arr[j + 1]) {
                // 因为我们是从小到大排序,所以如果前面的元素比后面的元素要大,那么就交换他们两的位置
                tep = arr[j]
                arr[j] = arr[j + 1]
                arr[j + 1] = tep
            }
        }
    }
    console.log(arr)