<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 数组在js中不是大括号 而是中括号
        var arr = [1, 2, 3]
        console.log(arr[0])
        console.log(arr[1])
        console.log(arr[2])
        console.log(arr[3])  // 报错还是其他  这里是undefined

        // 这里并不要求是相同的数据类型
        var arr1 = new Array(3, 4, 5.12, 'abc', true, null)
        console.log(arr1)
        console.log(arr1.length)
        // 可以调整数组大小  如果新的长度大于原长度 会补空 如果小于原长度 会截取
        arr1.length = 2
        console.log(arr1) 
        arr1.length = 6
        console.log(arr1) 

        var arr2 = ['A','B','C']
        arr2[1] = 99
        console.log(arr2)
        arr2[4] = 97
        // 索引超出范围时  数组大小会自动调整  空的位置使用undefined
        console.log(arr2) //A 99 C undefined 97
        console.log(typeof arr2[3])

        var arr3 = [10,20,'30','xyz']
        // 查找元素在数组中的索引位置
        console.log(arr3.indexOf(20)) // 1
        console.log(arr3.indexOf(30)) // -1


        console.log(arr3)
        // 和java中的subString()是类似的
        console.log(arr3.slice(3))
        console.log(arr3.slice(0,3))
        // 如果没有传参数 会从头到尾截取 相当于复制数组
        console.log(arr3.slice())

        // 如果往数组中添加元素 可以用push 会添加到末尾 同时可以push多个
        arr3.push(40)
        console.log(arr3)
        arr3.push(50,60)
        console.log(arr3)

        // 取数据 10 or 60
        // 从尾部取 可以达到栈的效果  先进后出 后进先出
        arr3.pop()
        console.log(arr3)
        var arr4 = [1]
        console.log(arr4.pop())
        console.log(arr4.pop())  // 会报错吗 undefined

        // 如果要从数组头部添加元素
        arr4.unshift(10,20)
        console.log(arr4)
        arr4.unshift(30)
        console.log(arr4)
        // 如果从数组头部 删除元素
        console.log(arr4.shift())
        console.log(arr4)
        console.log(arr4.shift())
        console.log(arr4.shift())
        console.log(arr4.shift())  // undefined

        // var arr5 = [12,68,5,10,89]
        // [10,12,5,68,89]
        var arr5 = ['B','C','A']
        console.log(arr5.sort())

        // concat可以把两个数组连接起来  返回一个新的数组
        var arr6 = arr5.concat([1,2,3])
        console.log(arr6)

        // 将数组中的每个元素用指定的字符串联起来 返回连接后的字符串
        console.log(arr6.join('-')) // A-B-C-1-2-3
        // 翻转数组
        arr6.reverse()
        console.log(arr6)
        // 从索引2开始 删除3个元素 
        arr6.splice(2,3)
        console.log(arr6)
        // 可以在删除的同时 进行添加
        arr6.splice(2,1,'D','E')
        console.log(arr6)

        var arr7 = [[1,2,3],[4,5,6]]
        console.log(arr7)



    </script>
</head>

<body>
    Hi Array
</body>

</html>