数组
1. 数组的定义与元素访问
定义有三种方式
(1)var a = [];
(2) var a = new Array();
(3) var a = [0,0,0];
访问元素:数组名+下标
a[0] a[3]
需要注意的是下标从0开始。
所以在使用的时候需要注意越界问题,比如5个元素的数组,那么它的下标范围为【0,4】,不包括5,5已经越界了。
数组的本质:一组变量的集合,或者说是一组内存单元。只不过对于变量的表示方式使用的是数组名+下标的方式。
2. 数组的常用属性和方法
数组的属性:
length:
1).告诉我们数组的长度:数组名.length
2).通过该属性可以改变数组的长度
数组的常用方法:
1)unshift:在数组的头部添加元素,返回值返回的是新数组的长度。
shift:删除数组头部的元素,返回值是删除的头部元素。
2)indexOf:查找在数组中重复出现的元素第一次出现的位置,返回值是该元素的下标。
lastIndexOf:查找数组中重复出现的元素最后一次出现的位置,返回值是该元素的下标。
3)push:在数组的尾部插入元素,返回值是添加元素后数组的长度。
pop:从数组的尾部删除最后一个元素,返回值是删除的元素。
4)slice(开始位置的下标,结束位置的下标):提取数组中指定连续的子数组。前包括,后不包括。
5)splice(开始删除位置的下标,要删除元素的长度,要选择插入或替换的内容),splice有“剪接”的含义。前面两个参数定义“剪”的部分,第三个参数定义“接”的部分,经过不同的参数组合就可以实现以下三个功能:
1、删除操作:删除数组中指定的任意元素
2、插入操作:在数组中指定位置插入元素
3、替换操作:在数组中替换指定位置的元素。
6)reverse:将数组中的元素,反序输出。在原数组的基础上进行反序输出,不会重新创建新数组。
7)map:原数组的映射,经过函数的加工,返回给一个新数组。
3.数组的应用
1)查找
indexOf系统提供的查找方法
我们也可以自己做一个查找
a.顺序查找
这种查找方法最简单,但是查找次数与数据量成正比效率低
b.折半查找(二分查找)
假设在一个已经有序的数组中,可以利用折半大幅提高效率。
折半查找的最坏查找次数与数据量的关系是对数关系,所以说它的查找效率是很高的,但是任何事情都有两面性,高效率就要有高代价,它的代价就是有序。
2)排序(冒泡排序、选择排序)
3)队列:先进先出,在头部出队(shift),在尾部入队(push)
4)堆栈:先进后出,在尾部进队(push),在尾部出队(pop)