前言
凡此皆编以号,其怪兽为零。 —X星统制官,《哥斯拉之怪兽大战争》
JavaScript的数组几乎就是对象,它们仅有四处不同。
- 数组有一个length属性。该属性并不是指数组中元素的数量,而是数组元素的最高序数加1。这种神奇的设定可以让JavaScript数组假装自己 “真的是数组”,
- 数组对象都继承自 Array.prototype,该原型比object.prototype多了一些更实用的函数
- 数组与对象的写法不同。数组的写法相对更简单:在左方括号( [ )和 右方括号( ] )之间包含零个、一个或多个表达式,并以逗号(,)分隔。
- 虽然JavaScript眼中的数组和对象几乎一样。但JSON眼中的它们很不一样
初始化
有两种方法可以创建新的数组:
- 数组字面量
- new Array(integer)
举例如下:
let my_little_array = new Array(3).fill(0) // my_little_array为 [0,0,0]
let same_thing = [0,0,0]
my_little_array === same_thing // false
复制代码
虽然same_thing和my_little_array中的值是一样,但它们是不同的数组。数组不是字符串,但是一些行为与对象类似,只有两个数组真的来自同一个引用的时候,它们才相等。
栈与队列
数组有一些方法让其与栈类似。pop方法返回数组中的最后一个元素,并将其从数组中移除。push方法则将传入的值附加到数组的末尾。
shift方法与pop类似,字不够移除并返回数组中的第零个元素。unshift则与push类似,只不过将元素插入数组的开头。就性能来说,shift和unshift比pop和push差很多,这种差异在数很大的时候尤为明显。当我们将shift和push一起使用的是偶,数组就会像一个队列一样 — 先进先出。
搜索方法
indexof
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。## 语法
语法
*string*.indexOf(*searchvalue*,*start*)
复制代码
参数值
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
start | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 string Object.length – 1。如省略该参数,则将从字符串的首字符开始检索。 |
返回值
类型 | 描述 |
---|---|
Number | 查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。 |
lastIndexOf
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索。
注意: 该方法将从后向前检索字符串,但返回是从起始位置 (0) 开始计算子字符串最后出现的位置。 看它是否含有字符串。
开始检索的位置在字符串的 start 处或字符串的结尾(没有指定 start 时)。
如果没有找到匹配字符串则返回 -1 。
注意: lastIndexOf() 方法是区分大小写的!
语法
*string*.lastIndexOf(*searchvalue*,*start*)
复制代码
参数值
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
start | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length – 1。如省略该参数,则将从字符串的最后一个字符处开始检索。 |
返回值
类型 | 描述 |
---|---|
Number | 查找的字符串最后出现的位置,如果没有找到匹配字符串则返回 -1。 |
includes
includes() 方法用于判断字符串是否包含指定的子字符串。
如果找到匹配的字符串则返回 true,否则返回 false。
注意: includes() 方法区分大小写。
语法
string.includes(searchvalue, start)
复制代码
参数值
参数 | 描述 |
---|---|
searchvalue | 必需,要查找的字符串。 |
start | 可选,设置从那个位置开始查找,默认为 0。 |
返回值
类型 | 描述 |
---|---|
Boolean | 如果找到匹配的字符串返回 true,否则返回 false。 |