数组是计算机编程世界里最常见的数据结构。任何一种编程语言都包含数组。它是编程语言中的内建模型,通常效率很高,可以满足不同需求的数据存储。
一、JavaScript 中的数组
数组的标准定义是:一个存储元素的线性集合(collection),元素可以通过索引来进行存取操作,所以通常是数字,用来计算元素之间存储位置的偏移量。
通俗地讲,数组是一种线性表数据结构,它使用一组连续的内存空间,来存储一组具有相同类型的数据。但是在 JavaScript 中,数组中可以保存不同类型的值(为遵守最佳实践,一般不建议这么做)。
然而 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 添加和删除元素
添加元素:
push方法: 把元素添加到数组的末尾;unshift方法: 把元素插入到数组的首位;
删除元素:
pop方法:删除数组末尾的元素;shift方法:删除数组首位的元素;slice方法:删除相应位置和数量的元素,还可以通过第三个参数添加或替换元素。
Tips!!!:
- 在 JavaScript 中,数组是一个可以修改的对象。添加元素,它就会动态增长;
- 通过
push和pop方法,可以用数组来模拟栈; - 通过
unshift和shift方法,可以用数组来模拟队列。
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 |