title: JavaScript与数据结构之数组
tags:

  • JavaScript
  • 数据结构
  • 有坑待填
    categories:
  • 编程语言
    date: 2019-04-03 21:19:38

🌞创建和初始化数组

  1. 数组的创建和循环遍历
  1. // 创建一个不指定长度的空数组
  2. var dayOfWeek = new Array()
  3. console.log('dayOfWeek: ' + dayOfWeek)
  4. // 创建一个指定长度的数组
  5. var dayOfWeek1 = new Array(7)
  6. console.log('dayOfWeek: ' + dayOfWeek1)
  7. // 创建的同时将数据以参数的形式传入
  8. var dayOfWeek2 = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday')
  9. console.log('dayOfWeek2', dayOfWeek2)
  10. // 直接使用[]创建数组
  11. var dayOfWeek3 = []
  12. console.log('dayOfWeek3', dayOfWeek3)
  13. // 创建时为数组填充数据
  14. var dayOfWeek4 = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
  15. console.log('dayOfWeek4', dayOfWeek4)
  16. // 查看数组长度
  17. console.log('dayOfWeek4.length:', dayOfWeek4.length)
  18. // 循环输出数组中元素
  19. for(var i = 0; i < dayOfWeek4.length; i++) {
  20. console.log('dayOfWeek4['+ i +']:', dayOfWeek4[i])
  21. }

运行结果:
JavaScript与数据结构之数组 - 图1

  1. 求“斐波那契数列的前20个数字”

  2. 已知斐波那契数列中第一个数字是1,第二个数字是2,从第三项开始,每一项都等于前两项的和。

  1. var fibonacci = []
  2. fibonacci[0] = 1
  3. fibonacci[1] = 2
  4. for (var i = 2; i < 19; i++) {
  5. fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2]
  6. }
  7. for (var i = 0; i < fibonacci.length; i++) {
  8. console.log('fibonacci['+ i +']:', fibonacci[i])
  9. }
  1. 结果:JavaScript与数据结构之数组 - 图2

🌞添加和删除数组

  1. 为数组(尾部)添加一个元素

      1. // 数组初始化
      2. var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      3. // 为数组(尾部)添加一个元素
      4. numbers[numbers.length] = 10
      5. console.log('numbers:', numbers)
    1. 在JavaScript中,数组是一个可以修改的对象。如果添加一个元素,它就会动态增长。在C和Java等其他语言中,我们如果要决定数组的大小,想要添加元素就要创建一个新的数组,不能简单地往其中添加所需的元素。

    2. 使用push往数组尾部添加一个元素,通过push方法可以添加任意一个元素。

      1. numbers.push(11)
      2. numbers.push(12, 13)
      3. console.log('numbers使用push之后:', numbers)
    3. 为数组的头部添加一个元素:为了实现这个需求,我们腾出数组里的第一个元素的位置,把所有的元素向后移动一位。我们可以循环数组中的元素,从最后一位+1(长度)开始,将其对应的前一个元素的值赋给它,依次处理,最后把我们想要的值赋给第一个位置(-1)上。for(var i = numbers.length; i >= 0; i--) { numbers[i] = numbers[i - 1]

  1. 这里i初始值为数组长度,利用了数组“下标”比“位置”小1的特点,numbers数组最后一位值为14,下标是13`numbers.length`14,也就是把不存在的`numbers[14]`先赋值为`numbers[13]`的值14,然后依次把前面一位的值赋给后面一位,`i >= 0`是为了保留出`numbers[0]`这个首位的位置,然后使用`numbers[0] = -1`把首位赋值。
  2. * 执行结果:![](https://images.fengjiaheng.top/images/20190403/2019-04-03_230956.png)
  3. 5. 使用`unshift`删除数组中的元素
  1. 结果:![](https://images.fengjiaheng.top/images/20190409/2019-04-09_181916.png)
  1. 从数组中移除元素:

    1. 循环错位覆盖从后向前覆盖,移除第一个元素的值:
      1. // 使用循环错位覆盖,删除数组第一个元素
      2. for (var i = 0; i < numbers.length; i++) {
      3. numbers[i] = numbers[i+1]
      4. }
      5. console.log('循环错位覆盖删除第一个元素', numbers)


JavaScript与数据结构之数组 - 图3
我们把数组中的所有元素都向左移动了一位,但是数组的长度还是17,这意味着数组中有额外的一个元素(值为undefined)。在最后一次循环中,i + 1引用了一个数组里还未初始化的位置,如果是在其他语言中,这样写可能就会报错了,不得不在numbers.length - 1的位置就停止循环。这些操作只是将数组第一位的值用第二位的值覆盖了,并没有删除元素,数组的长度和以前还是一样的,并且多了一个未定义的元素。

  1. 使用shift()方法:

    1. 删除数组中的第一个元素,可以使用内置的shift()方法,执行该方法后,不但值被移除,而且数组长度也会减一,位置也会被移除。
      1. // 使用shift()方法移除数组中的元素
      2. numbers.shift()
      3. console.log('使用shift()方法移除数组之后:', numbers)

JavaScript与数据结构之数组 - 图4

  1. 5. 使用shift()和unshift()方法,可以使用数组模拟基本的队列结构和一些操作。
  1. 在任意位置添加或删除数组中的元素

    1. 通过splice()删除从任意位置上删除任意个连续数组内元素。numbers.splice(5, 3),这段代码删除了从5开始的3个元素,这就意味着numbers[5]numbers[7]numbers[7]被删除了,

🌞二维和多维数组

🌞JavaScript数组方法

  1. 数组合并
  2. 迭代器函数
  3. 搜索和排序
  4. 输出数组为字符串

代码地址:https://gitee.com/sdsxfjh/javascript_and_data_structure