JavaScript数组的知识点

    技术2022-07-10  67

    数组

    什么是数组? 准确来说数组是一个数据的集合

    如何创建数组?

    第一种方式:字面量创建数组
    // 创建一个空数组 var arr1 = [] // 创建一个有内容的数组 var arr2 = [1, 2, 3]
    第二种方式:内置构造函数创建数组
    // 创建一个空数组 var arr1 = new Array() // 创建一个长度为 10 的数组 var arr2 = new Array(10) // 创建一个有内容的数组 var arr3 = new Array(1, 2, 3)

    数组的长度:length

    length:表示数组的长度,数组里有多少内容

    // 创建一个数组 var arr = [1, 2, 3] console.log(arr.length) // 3

    数组的索引(下标)

    索引:也就是下标,是指数组里面的数据排在第几个位置 数组的索引是从0开始的

    // 创建一个数组 var arr = [1,2,3] console.log(arr[0]) //1 console.log(arr[1]) //2 console.log(arr[2]) //3

    数组的常用方法

    push:用来在数组的末尾添加一个元素
    var arr = [1, 2, 3] arr.push(4) console.log(arr) // [1, 2, 3, 4]
    pop:用来在数组的末尾删除一个元素
    var arr = [1, 2, 3] arr.pop() console.log(arr) // [1, 2]
    unshift:用来在数组的最前面添加一个元素
    var arr = [1, 2, 3] arr.unshift(4) console.log(arr) // [1, 2, 3, 4]
    shift:用来在数组的最前面删除一个元素
    var arr = [1, 2, 3] arr.shift() console.log(arr) // [ 2, 3]
    splice:是截取数组中的某些内容,是按照数组的索引来截取的

    splice可以写三个参数: splice(从哪一个索引位置开始,截取多少个,替换的新元素) (第三个参数可以不写)

    不写第三个参数(删除) var arr = [1, 2, 3,4,5] arr.splice(1,2) console.log(arr) // [1,4,5] 写上第三个参数(替换) var arr = [1, 2, 3,4,5] arr.splice(1,2,"我是替换的内容") console.log(arr) // [1,"我是替换的内容",4,5] 任意位置的插入(插入到索引的前面) 参数:splice(从哪一个索引位置开始,0,插入的新元素) (第二个参数写成0,代表插入) var arr = [1, 2, 3,4,5] arr.splice(1,0,200) console.log(arr) // [1,200, 2, 3,4,5]
    reverse:用来反转数组
    var arr = [1, 2, 3] arr.sreverse() console.log(arr) // [ 3,2,1]
    sort:用来给数组排序
    var arr = [1, 2, 3] arr.sort() console.log(arr) // [ 3,2,1]

    sort排序有问题,它是按照字符串首字母的ascii值从小到大,如果首字母相同则按第二个ascii来排序,以此类推。 解决办法:

    var arr = [1, 2, 3] arr.sort(function(a,b){ console.log(a,b) // a 后一个 // b 前一个 return a - b;//排序的规则 如果后一个数减前一个数 小于0 就会交换位置 }) //降序 arr.sort(function(a,b){ return b - a; }) console.log(arr)
    concat:多个数组进行拼接

    不会改变原始数组,而是返回一个新的数组

    var arr = [1, 2, 3] // 使用 concat 方法拼接数组 var newArr = arr.concat([4, 5, 6]) console.log(arr) // [1, 2, 3] console.log(newArr) // [1, 2, 3, 4, 5, 6]
    join:把数组里面的每一项内容链接起来,变成一个字符串

    不会改变原始数组,而是返回一个新的数组 可以自己定义每一项之间链接的内容

    var arr = [1, 2, 3] // 使用 join 链接数组 var str = arr.join('-') console.log(arr) // [1, 2, 3] console.log(str) // 1-2-3

    for 和 for in 循环

    var obj = { name: 'Jack', age: 18 } for (var key in obj) { console.log(key) } // 会在控制台打印两次内容,分别是 name 和 age for in 循环的遍历是按照对象中有多少成员来决定了有多少成员,就会执行多少次key 是我们自己定义的一个变量,就和 for 循环的时候我们定义的 i 一个道理在每次循环的过程中,key 就代表着对象中某一个成员的 属性名

    数据类型之间存储的区别

    数据类型分为两大类:基本数据类型和复杂数据类型(引用数据类型) 基本数据类型:number / string / boolean / undefined / null 复杂数据类型:object / function / array / …

    我们的存储空间分成两种 栈 和 堆栈: 主要存储基本数据类型的内容堆: 主要存储复杂数据类型的内容

    基本数据类型在内存的存储情况: ——直接在 栈空间 内有存储一个数据 复杂数据类型在内存的存储情况:

    在堆里面开辟一个存储空间把数据存储到存储空间内把存储空间的地址赋值给栈里面的变量

    数据类型之间的比较

    基本数据类型是 值 之间的比较 复杂数据类型是 地址 之间的比较

    函数参数传递基本数据类型和复杂数据类型的区别

    基本数据类型之间的赋值

    var num = 10 var num2 = num num2 = 200 console.log(num) // 100 console.log(num2) // 200

    复杂数据类型之间的赋值

    var obj = { name: 'Jack' } var obj2 = obj obj2.name = 'Rose' console.log(obj.name) // Rose console.log(obj2.name) // Rose

    函数的参数

    函数传递基本数据类型

    function fn(n) { n = 200 console.log(n) // 200 } var num = 100 fn(num) console.log(num) // 100

    函数传递复杂数据类型

    function fn(o) { o.name = 'Rose' console.log(o.name) // Rose } var obj = { name: 'Jack' } fn(obj) console.log(obj.name) // Rose
    Processed: 0.010, SQL: 8