Array
数组是一种类列表对象,它的原型中提供了遍历和修改元素的相关操作。JavaScript 数组的长度和元素类型都是非固定的。因为数组的长度可随时改变,并且其数据在内存中也可以不连续,所以 JavaScript 数组不一定是密集型的,这取决于它的使用方式。
创建数组
var arr = new Array(1, 2, 3, 4, 5)
console.log(arr) // [1, 2, 3, 4, 5]
var arr = Array(1, 2, 3, 4, 5)
console.log(arr) // [1, 2, 3, 4, 5]
var arr = [1, 2, 3, 4, 5]
console.log(arr) // [1, 2, 3, 4, 5]
访问数组
var arr = [1, 2, 3, 4, 5]
console.log(arr[0]) // 1
console.log(arr[arr.length - 1]) // 5
console.log(arr['1']) // 2
遍历数组
更多遍历方法参见 遍历数组的方法
var arr = [1, 2, 3]
// for 循环遍历
for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
/**
* 1
* 2
* 3
*/
}
// for of 遍历
for (const item of arr) {
console.log(item)
/**
* 1
* 2
* 3
*/
}
使用关键字 delete
删除数组中的元素
虽然元素被删除了
但数组的总长度依然不变
删除的元素被 empty
代替 变成了稀疏数组
const arr = [0, 1, 2, 3, 4, 5,]
console.log(arr, arr.length) // [0, 1, 2, 3, 4, 5] 6
delete arr[4]
console.log(arr, arr.length) // [0, 1, 2, 3, empty, 5] 6
delete arr[0]
console.log(arr, arr.length) // [empty, 1, 2, 3, empty, 5] 6
稀疏数组
稀松数组指的是数组的长度(length)与数组中有效元素的总数不相等
这里的无效元素主要指的是 empty
我们可以使用 forEach
函数来看看 empty
是否有被遍历循环到
const arr = [, , , undefined, null, 1, 2, 3, 4,]
console.log(arr.length) // 9
console.log(arr) // [empty, empty, empty, undefined, null, 1, 2, 3, 4]
arr.forEach(item => console.log(item))
/**
* 这里只打印出来了 6 个结果
* 可以看出数组中的 empty 是无效元素
* undefined
* null
* 1
* 2
* 3
* 4
*/