JS要点整理-6

104 阅读2分钟

数组

存放一些数据的集合

数组/对象/函数是引用数据类型(复杂数据类型)

创建数组

  1. 字面量的方式创建 (使用场景最多的方式)
// 创建一个空数组
var arr = [];

// 创建一个有内容的数组
var arr1 = [1, 2, 3];
  1. 内置构造函数的方式创建
// 创建一个空数组
var arr = new Array()

// 创建一个有长度的数组
var arr1 = new Array(10)
console.log(arr1)      //输出undefined

// 创建一个有内容的数组
var arr2 = nee Array(1, 2, 3)
//几个逗号几个空属性
var arr2 = [,,,]

var arr6 = []
console.log(arr6);
arr6[2] = 2            //将未定义赋予空属性
console.log(arr6);

数组的长度

数组的长度不固定, 取决于数组内部有多少个元素

当 数组的 长度 === 0 代表当前数组为空数组

查看方式:

  1. 打印数据, 在控制台展开数组, 找到最后的length
  2. 打印 数组名.length

数组的索引(下标)

指一个数据在这个数组内排列在第几个位置上

下标是固定的, 永远是 0 1 2 3 4 5 ....,但是下标对应的内容, 不是固定的

数组遍历

遍历数组就是想办法拿到数组的每一个元素, 通常我们可以通过下标获取到元素的某一项, 所以我们只需要想办法拿到数组的所有下标即可

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2]
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

/**
*  3. 封装一个函数, 名为 includes
*     功能为 传入一个数组和数字, 判断这个数组中是否包含这个数字
*         包含返回true, 否则返回 false
*/
        function includes(arr, num) {
            for(var i = 0; i < arr3.length; i++){
                if (num === arr3[i]) {
                    return true
                }
                }
            return false
        }
        var arr3 = [1, 2, 2, 4, 5, 5, 5, 8, 9, 5]
        var res = includes('arr3', 9)
        console.log(res);

冒泡排序

        // 冒泡排序 (基础版, 没有优化)
        for (var j = 0; j < arr.length; j++) {
            for (var i = 0; i < arr.length; i++) {
                if (arr[i] > arr[i + 1]) {
                    var temp = arr[i]
                    arr[i] = arr[i + 1]
                    arr[i + 1] = temp
                }
            }
            console.log('第 ', j + 1, ' 轮冒泡排序后: ', arr)
        }
        
        //优化版
        var arr = [9, 8, 7, 6, 5, 4, 3, 2, 1]
        //- 1 其他定位好,最后一次不用定位
        for(var i = 0; i < arr.length - 1; i++){
            //- 1 比较对数比实际长度少一
            //- i 已完成定位的不参与比较
            for(j = 0; j < arr.length - 1 - i; j++){
                if (arr[j] > arr[j + 1]) {
                    temp =arr[j]
                    arr[j] = arr[j + 1]
                    arr[j + 1] = temp
                }
            }
        }
        console.log(arr);        

选择排序

        var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
        for (var k = 0; k < arr.length; k++) {
            // 1. 假设 k 是最小值的下标, 保存在 minIndex
            var minIndex = k
            // 2. 循环会帮我们找到真实最小值的下标, 并保存在变量 minIndex
            for (var i = k + 1; i < arr.length; i++) {
                if (arr[minIndex] > arr[i]) {
                    minIndex = i
                }
            }
            // 3. 交换 真实最小值(下标 minIndex) 和 假设最小值 (k) 的位置
            var temp = arr[k]
            arr[k] = arr[minIndex]
            arr[minIndex] = temp
        }

        console.log('排序后: ', arr)