数组: 基础应用 + 数组重构
基础应用
首先明确一点,数组的方法可分为两类:
- 可以改变原来数组的
- 执行后不修改原数组,返回一个新的数组
什么是数组: 无序的值做有序地排列, 每个值叫做元素,每个值存储的位置叫做下标。在js中的数组并不是一种数据结构,他是根据对象创建出来的一种存储单元,和其他的语言不同的是:数组的长度可以改变,数组的元素可以是任意类型,所以js数组的效率更低
数组性能分析:
- 数组是一种紧密型结构,删除或插入一个元素,后面的元素都受影响,会相应的前进和后挪
- 数组的删除和插入速度很慢,最后一个元素除外
- 数组有序,可以用来做元素的排序
- 数组只用来存储值,至于值是什么不用考虑,这就表明数组的元素是多元的
- 数组的查找很慢,要一个一个遍历,但因为有序可以根据当前的元素找到相邻的元素
数组的创建:
- 字面量法:
var array = [1,2,3]
, 在声明变量的同时存入具体的值 - 构造函数创建实例:
var arr = new Array()
- 此方法要区分以下几点:
- 如果是
var arr = new Array(1,2,3)
等价于var arr = [1,2,3]
- 如果只填写一个参数,且参数为数字,则必须是正整数,否则报错,此数值表示创建的数组的长度
var arr = new Array(3)
等价于var arr = [,,,]
,创建的数字中的元素都是空,值为空但打印出来的结果是Undefined,区分空和值存的Undefined的情况 - 如果参数不是数字,则当做是元素存在数组中:
var arr = new Array("a")
等价于var arr = ["a"]
数组的长度, [].length :表示数组中元素的个数,是一个可读可写属性,但是此属性不能删除
- 如果length的长度大于当前数组的长度,则补充长度并在扩充的位置补充空元素
- 如果修改后的length小于原来的长度,则数字从后向前删除元素直至满足
修改原数组
- push()
- pop()
- shift()
- unshift()
- slice()
- sort()
- reverse()
- fill()
返回新数组
- 其他的都是返回新数组的,或者其他值,但不修改原数组