数组定义
// 一维数组字面量方式
const arr = [1,2,3]
// 构造函数Array
const arr1 = Array(5)
console.log(arr1[0] == undefined)
// true
// fill函数填充数组
const arr2 = arr1.fill(0, -3, -1)
// [ <2 empty items>, 0, 0, <1 empty item> ] [ <2 empty items>, 0, 0, <1 empty item> ]
console.log(arr1, arr2)
arr2[0] = 1
console.log(arr1, arr2)
// [ 1, <1 empty item>, 0, 0, <1 empty item> ] [ 1, <1 empty item>, 0, 0, <1 empty item> ]
// 拷贝一维数组
const arr3 = [...arr1]
const arr5 = arr1.slice()
const arr6 = Array.from(arr1)
arr3[0] = 2
arr5[0] = 4
arr6[0] = 5
console.log(arr1, arr3, arr5, arr6)
// [ 1, <1 empty item>, 0, 0, <1 empty item> ]
// [ 2, undefined, 0, 0, undefined ]
// [ 4, <1 empty item>, 0, 0, <1 empty item> ]
// [ 5, undefined, 0, 0, undefined ]
console.log(arr1[1] === arr6[1])
// true
// 定义二维数组并赋初值
const arr7 = Array(3).fill(Array(4).fill(0)) // 赋值的是引用
console.log(arr7)
arr7[0][0] = 5
console.log(arr7)
// [ [ 5, 0, 0, 0 ], [ 5, 0, 0, 0 ], [ 5, 0, 0, 0 ] ]
// 正确的方式如下
const arr8 = Array(3)
.fill()
.map(() => Array(4).fill(0))
console.log(arr8)
// [ [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]
arr8[0][0] = 3
console.log(arr8)
// [ [ 3, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ] ]