1、声明数组的方法
    (1)字面量 var arr = [1,2,3]
    (2)构造函数实例化 var arr = new Array()
    (3)不用new关键字调用内置Array构造函数 var arr = Array() 这种方法不推荐
    (4)还可以使用Array.from来创建新数组。
    这四种实例的原型都是Array.prototype

    2、js中,数组是在一种特别的对象,索引相当于key,每个元素是value值,访问机制和对象是一样的。

    1. let obj ={
    2. 0: 1,
    3. 1: 2,
    4. 2: 3
    5. },
    6. arr = [1,2,3]
    7. js中,' . '语法访问对象属性会转换成'[]'语法访问
    8. obj.key => obj['key']
    9. console.log(arr[3]) // => undefined 访问对象为定义的属性,返回undefined

    稀松数组
    有些元素没有值的数组叫稀松数组
    [,1,3,,5,]数组最有一个逗号后面没有值的话,不会作为empty算进数组元素。
    Array构造函数不能传空值,Array如果只接受了一个number参数,则代表生成该长度数组,元素都是empty,如果传无效数字,则会报错,如果传其他类型的参数,则以这些参数作为数组元素创建数组

    1. let arr = new Array (5) // => [empty * 5]

    3、数组常用方法
    A,添加数组元素的方法,具有通用性,可用于具有length属性的对象如类数组。
    (1)push,将不固定数量元素添加到数组末尾,改变数组本身,返回改变后数组的length
    (2)unshift,将不固定数量元素添加到数组开头,改变数组本身,返回改变后数组的length

    1. //实现自己的数组push方法
    2. //第一种写法,给后面索引添加value
    3. Array.prototype.myPush = function(){
    4. let formerLength = this.length
    5. for(var i = 0; i < arguments.length; i++){
    6. this[formerLength + i] = arguments[i]
    7. }
    8. }
    9. 第二种写法,利用数组length随时改变的行为,直接给末尾添加元素
    10. Array.prototype.myPush = function(){
    11. for(var i = 0; i < arguments.length; i++){
    12. this[this.length] = arguments[i]
    13. }
    14. return this.length
    15. }
    16. let arr = [1,2,3]
    17. arr.myPush(5,6,7)

    B,切头、切尾的方法
    共同特点:具有通用性,根据length属性来判断数组第一或最后一位元素,所以可以通过call或apply,对类数组使用这个方法。如果数组length为0,则返回undefined。返回去除的元素。没有参数
    (1)pop,去除数组的尾巴,最后一个元素
    (2)shift,去除数组的头部,第一个元素
    C,splice
    具有通用性,通过删除替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。
    start:第一个参数,指明修改的开始位置。如果大于数组本身长度,从数组末尾开始添加内容。如果是负值,则从数组末尾开始指定开始位置(等于 arr.length + n),如果负值的绝对值大于数组长度,删除开始位置为第0项
    deleteCount:说明要删除的元素个数。
    如果被省略,或者大于start后元素的总数,则删除后面所有元素。
    item1,item2…可选
    说明要添加的元素。
    返回值:如果删除了元素,则以数组形式返回被修改的内容,如果没有删除元素则返回空数组。

    1. let arr = [1,2,3,4,5,6]
    2. //删除元素
    3. arr.splice(1,1) // => [1,3,4,5,6]
    4. //替换元素
    5. arr.splice(1,1,'2') // => [1, '2', 3, 4, 5, 6]
    6. //添加
    7. arr.splice(1,0,'9') // => [1,'9',2,3,4,5,6] 是在元素之前添加,注意下标
    8. // start也可以为负值
    9. arr.splice(-1,0,'6') // => [1,2,3,4,5,'6',6]

    写一个判断开始位置的方法

    1. function spliceStartIndex(arr,start){
    2. let index = 0;
    3. return index += ( start >=0 ? start : arr.length + start )
    4. }

    D、sort函数
    sort函数,默认排序顺序是在将元素转换为字符串再根据对位数值的ASCII码来排序,原数组已改变。返回值为改变后的数组。

    1. let arr = [22,3,57,8]
    2. arr.sort()
    3. console.log(arr) // => [22,3,57,8]

    sort可以接收一个函数参数,函数有两个形参分别为排序的两个值。

    1. arr.sort((a,b)=>{
    2. //如果返回正值,a排在b前面
    3. //如果返回负值,a排在b后面
    4. //如果返回零,位置不调整。
    5. return a - b
    6. })

    随机排序
    利用Math.random() 产生0-1之间的数

    1. let arr =[1,3,4,5,7,4,32]
    2. arr.sort((a,b)=>{
    3. let random = Math.random()
    4. return radom - 0.5
    5. })

    E、reverse颠倒数组元素顺序

    上述方法都是会改变数组本身的方法。