访问数组元素:“数组[下标]”
数组中可以存放任意类型的数据
数组长度可以任意变化,不需要提前声明
数组元素的个数:数组名.length
使用Array()函数创建更详细的数组对象
格式:
var 数组名 = new Array(); //数组下标从0开始

一维数组的每个元素都是数组,则称为二维数组。若二维数组的每个元素都是数组,则为多维数组。
虽然数组中元素类型可以不一致,但实际使用时一般都需要统一数据类型。二维数组则是让每个子数组统一数据类型和含义

length表示数组元素数量
数组的length属性允许直接修改,增大数组的length属性,数组会出现空白元素;减小数组的length属性,自动删除下标大于等于length的元素(实际场景中,一般约定为只读属性,不直接修改数组的length属性)
JS提供了许多函数用于操作数组和数组元素,覆盖了常见的数组操作函数
新增元素分为三种,分别在数组尾部、中间、首部增加元素
使用push函数新增元素时,数组长度自动增加1,将新元素设置为尾部元素;push函数接收多个参数时,自动在尾部追加多个元素

JS支持在数组的某个位置新增元素,并自动调整其他元素的索引
数组名.splice(参数1,参数2,参数3,......,参数3)
参数1:新增元素插入的位置
参数2:从插入位置是否删除后续元素
参数3...n:插入n个新元素


查找元素分为三种方法:从后往前,从前往后,按条件查找
从前往后查找:数组的indexOf(value)从0开始向后查找value在数组中的位置,如此存在,返回value对应的索引,如果不存在,返回-1
indexOf(value)
遵循规则:
如果value存在于数组中,返回与value全等的元素的索引
索引从0开始,如果存在,返回-1
indexOf(value)使用全等(===)进行比较
与indexOf(value)一样,区别是从后往前查找
用splice函数删除指定下标的元素后,后续元素的下标自动更新,使索引连续。(delete操作删除元素不会修正其他元素的索引)

数组名.splice(参数1 , 参数2 ,参数3 , … , 参数3)
参数1:索引号
参数2:表示删除多少个元素
参数3:表示替换的元素


数组的forEach()方法是接收一个回调函数作为参数,使用每个元素执行一次该函数
语法:
forEach(callback[,thisArg])
callback:必选参数,表示为每个元素执行的回调函数,该函数接收三个参数
形式:callback(element,index,array)
element:当前元素
index:元素对应的索引号
array:当前数组
thisArg:可选参数,表示执行callback时绑定的this对象

基于In-place算法的排序方法sort(callback)
callback(a,b)
参数a、b表示数组的两个元素,sort将按照一定顺序使用两个数组元素作为参数调用callback回调,再根据callback的返回值(-1、0、1)调整元素a、b在数组中的位置
-1(小于0的数),表示a位于b的前面,否则a、b交换位置
1(大于0的数),表示a位于b的后面,否则a、b交换位置
0,表示a、b位置不需要交换
调用sort函数如果没有传递callback参数时,将根据数字大小或字符串的Unicode编码对元素排序

排序的稳定性指数组每次排序的结果都一样。sort()的稳定性取决于callback()
如果callback(a,b)是稳定的,则a、b比较结果是稳定的,则sort()是稳定的,反之不稳定。
利用数组的reduce函数(从前往后)或reduceRight函数(从后往前)进行累加
