JavaScript 数据结构--数组

数组是计算机编程世界里最常见的数据结构。任何一种编程语言都包含数组。它是编程语言中的内建模型,通常效率很高,可以满足不同需求的数据存储。

一、JavaScript 中的数组

数组的标准定义是:一个存储元素的线性集合collection),元素可以通过索引来进行存取操作,所以通常是数字,用来计算元素之间存储位置的偏移量。

通俗地讲,数组是一种线性表数据结构,它使用一组连续的内存空间,来存储一组具有相同类型的数据。但是在 JavaScript 中,数组中可以保存不同类型的值(为遵守最佳实践,一般不建议这么做)。

线性表.001.jpeg
然而 JavaScript 中的数组,严格来说应该称作对象,是一种特殊的对象,索引是它的属性,可以是整数,但是由于 JavaScript 中对象的属性名必须为字符串,所以这些索引在内部由数字类型被转换为字符串类型。

二、使用数组

2.1 创建和初始化数组

你可以通过 [] 操作符来声明一个数组变量:

var nums = [];     // 长度为 0

当然了,你也可以在声明数组时直接放入一些元素:

var nums = [1,2,3,4];    // 长度为 4

另外,你还可以通过构造函数来创建它:

var nums = new Array(1,2,3,4,5);

同样,你也可以用它来创建一个长度为 10,元素为 0 的数组:

var arr = new Array(10).fill(0);

最后,我们可以通过 Array.isArray() 来判断一个对象是否是数组:

var a = 1;
console.log(Array.isArray(a)); // false
console.log(Array.isArray(nums)); // true

2.2 添加和删除元素

添加元素:

  1. push 方法: 把元素添加到数组的末尾;
  2. unshift 方法: 把元素插入到数组的首位;

删除元素:

  1. pop 方法:删除数组末尾的元素;
  2. shift 方法:删除数组首位的元素;
  3. slice 方法:删除相应位置和数量的元素,还可以通过第三个参数添加或替换元素。

Tips!!!:

  1. 在 JavaScript 中,数组是一个可以修改的对象。添加元素,它就会动态增长;
  2. 通过 pushpop 方法,可以用数组来模拟栈;
  3. 通过 unshiftshift 方法,可以用数组来模拟队列。

2.3 二维和多维数组

JavaScript 只支持一维数组,但是可以通过数组嵌套数组的方式实现任一多维数组:

var arrs = [[1,2],[3,4]]

2.4 JavaScript 数组的方法

方法名 描述
concat 连接 2 个或更多数组,并返回结果
every 对数组中每一个元素运行指定函数,如果该函数对每一项都返回true,则返回 true
filter 对数组中每一个元素运行指定函数,返回该函数返回 true结果的项组成的数组
forEach 对数组中每一个元素运行指定函数,没有返回值
join 将所有的数组元素拼接成一个字符串
indexOf 返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1
lastIndexOf 返回在数组中搜索到的与给定参数相等的元素的索引里最大的值
map 对数组中的每一项运行指定函数,返回每次函数调用的结果组成的数组
reverse 翻转数组
slice 传入索引值,将数组里对应范围内的元素作为新数组返回
some 对数组中的每一项运行指定函数,任一项返回true,则返回true
sort 对数组中的元素进行排序
toString 将数组作为字符串返回
valueOf 类似 toString