导图社区 JS数组用法
JS数组用法(数组的增删改查,数据的循环输出等)。
编辑于2021-03-24 21:08:30JS数组用法
认识数组
内置对象是JS语言自带的对象,提供了一些基本的功能供开发者使用。常用的内置对象有Math,String,Array,Date等。
对象
属性(变量)和方法(函数)的集合
数组就是对象
可以存储多个不同类型的数据
创建数组
内存
栈区
基本数据类型保存在栈区,会根据函数的结束而自动释放
堆区
需要手动开辟,并且需要手动释放
new
1、在堆区开辟内存空间来存储对象
2、返回堆区对象的引用
通过栈区的引用,访问堆区的对象
构造函数法创建数组
1、创建空数组
2、创建确定容量的数组
3、创建一个拥有一些数据的数组
字面量法创建数组
1、创建空数组
2、创建一个拥有一些数据的数组
数组的访问(赋值与取值)
数组元素的访问
直接通过数组下标访问
赋值与取值
通过数组下标取值,并可以对其进行赋值
数组的遍历
快速遍历:for-in
in的前面针对于数组来说是数组下标
for循环遍历
for循环按顺序遍历
forEach()遍历
ECMAScript5.0加入的新方法,低版本IE中不支持
数组的长度,元素的更新,增加和删除
数组长度
数组元素的个数
length不计算非正规(数字)下标
数组最多可以包含4294967295个项,基本上可以满足任何编程要求
数组长度的增加
数组长度的增加,默认赋值为undefined
数组长度的减少
数组长度的减少,多余的删除
添加数组元素
删除数组元素
用delete操作符来删除指定的元素
注意:数组长度不会改变,只是对应的值删除为undefined
数组中常用的方法
push(item1, item2, ...)
功能
在数组的末尾添加一个或者多个元素
参数
要添加的元素
返回值
添加数据后数组的长度
unshift(item1, item2, ...)
功能
在数组的开头添加一个或多个元素
参数
要添加的元素
返回值
添加数据后数组的长度
pop()
功能
删除数组末尾的一个元素
参数
无
返回值
被删除的元素
shift()
功能
在数组的开头删除一个元素
参数
无
返回值
被删除的元素
join(str)
功能
将数组的元素用参数字符串拼接成一个新的字符串
参数
一个字符串
返回值
拼接的结果
注意:并不会改变原数组
reverse()
功能
倒置数组元素
参数
无
返回值
倒置以后的数组
注意:将会改变原数组
slice(startIndex, endIndex)
功能
在数组中,从startIndex下标开始一直截取到endIndex下标之前
参数
开始和结束下标
返回值
截取的数据数组
注意:不包含endIndex下标处的元素
注意:不会改变原数组
splice(下标,个数,item1, item2, ...)
功能
在数组的中间添加或者删除一些元素
添加
从下标为1的位置删除0个元素,并添加两个元素8, 9
注意:如果下标大于原数组最大的下标,都是在数组最后添加元素
删除
从下标为1的位置删除两个元素(2, 3),并添加两个元素8, 9,返回含有被删除元素的数组
注意:如果省略可选参数,则从下标开始删除对应个数的元素,返回删除的元素数组
参数
下标: 必需。规定从何处添加/删除元素 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
个数:必需。规定应该删除多少元素。必须是数字,但可以是 "0"。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, item2, ...:可选。要添加到数组的新元素
返回值
含有被删除的元素的数组
注意:将会改变原数组
concat()
功能
将多个数组拼接成一个数组
参数
一个或多个数组或者元素
返回值
拼接之后新的数组
注意:拼接后数组的元素将按照传入参数的顺序排列
注意:不改变原数组
indexOf(item)
功能
从数组的左侧开始查找对应第一次出现的参数元素的下标
参数
要查找的元素值
返回值
如果找到了对应的元素则返回该元素的下标值,否则返回-1
lastIndexOf(item)
功能
从数组的右侧开始查找对应第一次出现的参数元素的下标
参数
要查找的元素值
返回值
如果找到了对应的元素则返回该元素的下标值,否则返回-1
数组排序
冒泡排序
原理
冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或者最大的元素浮到顶端,最终达到完全有序
公式
sort()
默认升序排序
sort()调用每一项的toString()方法,然后比较得到的字符串,确定如何排序
排降序,需要给出排序的标准,排序的标准是一个函数
多维数组
迭代方法
ECMAScript5为数组定义了5个迭代方法,每个方法接收2个参数,一个是每一项运行的函数,一个是运行该函数的作用域对象,传入这些方法的函数会接收三个参数:数组项的值,该项在数组中的位置,数组对象本身。
every()
对数组中的每一项运行给定函数,如果该数组中每一项都返回true,则返回true
filter()
对数组中的每一项运行给定函数,返回该函数返回true的项组成的数组
forEach()
对数组中的每一项运行给定函数,这个方法没有返回值
map()
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
some()
对数组中的每一项运行给定函数,只要其中有一项返回true, 则返回true。与every()相反
归并方法
ECMAScript5还新增了2个归并方法,这两个方法都会迭代数组的所有项,然后构建成一个最终返回的值
reduce()
语法
arr.reduce([callback, initialValue])
callback(previousValue, currentValue, currentIndex, array)
这个函数返回的任何值都会作为第一个参数自动传递给下一项
previousValue:上一次调用回调函数返回的值,或者是提供的初始值(initialValue)
currentValue:数组中当前被处理的元素
currentIndex:当前被处理元素在数组中的索引,即currentValue的索引。如果有initialValue初始值,从0开始,否则从1开始
array:调用reduce()的数组
initialValue
可选参数, 作为第一次调用 callback 的第一个参数。
例子
reduceRight()
从数组的最后一项开始,向前遍历到第一项
eg: 与reduce()一样,方向相反