Array

数组是一种类列表对象,它的原型中提供了遍历和修改元素的相关操作。JavaScript 数组的长度和元素类型都是非固定的。因为数组的长度可随时改变,并且其数据在内存中也可以不连续,所以 JavaScript 数组不一定是密集型的,这取决于它的使用方式。

创建数组

  1. var arr = new Array(1, 2, 3, 4, 5)
  2. console.log(arr) // [1, 2, 3, 4, 5]
  3. var arr = Array(1, 2, 3, 4, 5)
  4. console.log(arr) // [1, 2, 3, 4, 5]
  5. var arr = [1, 2, 3, 4, 5]
  6. console.log(arr) // [1, 2, 3, 4, 5]

访问数组

  1. var arr = [1, 2, 3, 4, 5]
  2. console.log(arr[0]) // 1
  3. console.log(arr[arr.length - 1]) // 5
  4. console.log(arr['1']) // 2

遍历数组

更多遍历方法参见 遍历数组的方法

  1. var arr = [1, 2, 3]
  2. // for 循环遍历
  3. for (let i = 0; i < arr.length; i++) {
  4. console.log(arr[i])
  5. /**
  6. * 1
  7. * 2
  8. * 3
  9. */
  10. }
  11. // for of 遍历
  12. for (const item of arr) {
  13. console.log(item)
  14. /**
  15. * 1
  16. * 2
  17. * 3
  18. */
  19. }

使用关键字 delete 删除数组中的元素

虽然元素被删除了

但数组的总长度依然不变

删除的元素被 empty 代替 变成了稀疏数组

  1. const arr = [0, 1, 2, 3, 4, 5,]
  2. console.log(arr, arr.length) // [0, 1, 2, 3, 4, 5] 6
  3. delete arr[4]
  4. console.log(arr, arr.length) // [0, 1, 2, 3, empty, 5] 6
  5. delete arr[0]
  6. console.log(arr, arr.length) // [empty, 1, 2, 3, empty, 5] 6

稀疏数组

稀松数组指的是数组的长度(length)与数组中有效元素的总数不相等

这里的无效元素主要指的是 empty

我们可以使用 forEach 函数来看看 empty 是否有被遍历循环到

  1. const arr = [, , , undefined, null, 1, 2, 3, 4,]
  2. console.log(arr.length) // 9
  3. console.log(arr) // [empty, empty, empty, undefined, null, 1, 2, 3, 4]
  4. arr.forEach(item => console.log(item))
  5. /**
  6. * 这里只打印出来了 6 个结果
  7. * 可以看出数组中的 empty 是无效元素
  8. * undefined
  9. * null
  10. * 1
  11. * 2
  12. * 3
  13. * 4
  14. */