JS系列 -- Array 浅析
概述
数组是按次序排列的一组值的集合,它是一个对象。
数组可以存储任何类型的数据(数字,字符串,布尔值或者对象)
创建方法
使用 Array 构造函数
使用数组字面量表示法
数组字面量由一对包含数组项的方括号表示,多个数组之间以逗号隔开。
属性 length
表示数组的长度,即数组中元素的个数。
数组索引从 0 开始,索引上下限为 0 到 length-1 。
数组的 length 属性不是只读的,可以进行设置
注意:arr02
中 arr02[ 1 ] === undefined
,这个元素是存在的,只不过值为 undefined。
原型链
Array 是对象,所以 Array 有对象的一些方法
可以为数组添加属性,因为数组是对象。
检测数组
Array.isArray()
==> 用于确定传递的值是否是一个 Arrayvalue instanceof Array
==> 使用 instanceof 操作符检测数组value.push()
==> 使用数组的特有方法,从而检测数组
方法 API
Object 原型上的 API
Array.prototype API
栈方法
栈是一种可以限制插入和删除项的数据结构。它是一种 LIFO(Last-In-First -Out,后进先出)的数据结构,栈中项的插入(推入)和移除(弹出)只发生在一个位置 —- 栈的顶部。
push()
==> 将一个或多个元素添加到数组的末尾,并返回新数组的长度。pop()
==> 从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
队列方法
队列数据结构的访问规则是 FIFO(Fitst-In-Fitst-Out,先进先出),队列在列表的末端添加项,在列表前端移除项。
shift()
==> 从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。unshift()
==> 将一个或多个元素添加到数组的开头,并返回新数组的长度。
重排序方法
重排序方法 sort()
和reverse()
的返回值是经过排序之后的数组,这两种方法都会改变原数组。
sort()
==> 在适当的位置对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。
reverse()
==> 将数组中元素的位置颠倒,并返回该数组的引用。第一个数组元素成为最后一个数组元素,最后一个数组元素成为第一个。
操作方法
concat()
==> 用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。slice()
==> 返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,原数组不会被修改。splice()
==> 通过删除现有元素和/或添加新元素来更改一个数组的内容。
返回由被删除的元素组成的一个数组。
删除了一个元素 ==> 返回只包含一个元素的数组。
没有删除元素 ==> 返回空数组。
参数:array.splice(start [ , deleteCount [, item1 [, item2, ... ] ] ])
位置方法
indexOf()
==> 返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1LastIndexOf()
==> 返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找
迭代方法
forEach()
==> 对数组的每个元素执行一次提供的函数。返回 undefined
参数:回调函数和可选的执行回调函数时用作this的值,回调函数接受三个值:- 数组中正在处理的当前元素
- 数组中正在处理的当前元素的索引
- forEach()方法正在操作的数组
map()
==> 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。返回一个新数组,每个元素都是回调函数的结果
和forEach
作用一样,只是返回一个新数组every()
==> 测试数组的所有元素是否都通过了指定函数的测试。返回布尔值some()
==> 测试数组中的某些元素是否通过由提供的函数实现的测试。返回布尔值
filter()
==> 创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 返回一个新的通过测试的元素的集合的数组
归并方法
reduce()
==> 对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。返回函数累计处理的结果reduceRight()
==> 接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。返回函数累计处理的结果