数组也是一个对象,它和普通的对象功能一样,也是用来存储一些值的。
不同的是普通对象使用字符串作为属性名,而数组使用数字作为索引操作元素。
索引:从0开始的整数就是索引,比如有一个数组[1,2,3,4],那么索引0对应的元素就是1,索引1对应的元素就是2,以此类推...
创建一个数组
方法一:var 数组名 = new Array()
方法二:使用字面量来创建一个数组
语法:var 数组名 = [元素]
使用字面量创建数组时,可以在创建时就指定数组中的元素,将要添加的元素作为构造函数的参数传递进去,元素之间使用逗号隔开。
var arr = [1,2,3,4,5]
数组中的元素可以是任意的数据类型,也可以是对象、函数、也可以是数组。
向数组中添加元素
语法:数组[索引] = 值
arr[1] = 5
读取数组中的元素
语法:数组[]
如果读取不存在的索引,也不会报错,而是返回undefined
获取数组的长度
可以使用length数字那个来获取数组的长度(即元素个数)
语法:数组名.length
对于连续的数组,使用length可以获取到数组的长度;对于不连续的数组,使用length会获取到数组的最大索引+1。所以尽量不要创建非连续的数组。
修改length
如果修改的length大于原长度,则多出的部分会空出来
如果修改的length小于原长度,则多余的元素会被删除
数组的常用方法
push():该方法可以向数组的末尾添加一或多个元素,并返回数组的新长度
可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾。
<script type="text/javascript">
var arr = [1,2,3,4]
arr.push(5)
console.log(arr)
</script>
pop():该方法可以删除数组的最后一个元素,并将删除的元素作为返回值返回。
unshift():向数组的开头添加一个或多个元素,并返回新的数组长度
向前边插入元素时,其他元素的索引会依次调整。
slice():可以用来从数组中提取指定的元素
该方法不会改变数组元素,而是将截取到的元素封装在一个新数组中返回。
参数:
第一个:截取开始的位置的索引,包含开始索引对应元素
第二个:截取结束的位置的索引,不包含结束索引对应的元素
第二个参数可以省略不写,此时会截取从开始索引往后的所有元素;索引也可以传递一个负值,如果传递一个负值,则往后从前计算。比如:-1指的是倒数第一个。
<script type="text/javascript">
var arr = [1,2,3,4]
var arr1 = arr.slice(1,2)
console.log(arr1)
</script>
splice():可以删除数组中的指定元素
使用splice()会影响到原数组,会将指定数组元素从原数组中删除,并将删除的元素作为返回值返回。
参数:
第一个:表示开始位置的索引
第二个:表示删除的数量
第三个及以后:可以传递一些新的元素,这些元素将会自动插入到开始位置索引前边
caoncat():可以连接两个或多个数组,并将新的数组返回
该方法不会对原数组产生影响。
join():该方法可以将数组转换为一个字符串
该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回,可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符。如果不指定则默认使用逗号作为连接符。
reverse():该方法用来反转数组
该方法会直接修改数组。
sort():可以用来对数组元素进行排序
该方法会影响原数组,默认使用Unicode编码排序。即使是纯数字的数组,使用sort()排序时也会得到错误的排序。
我们可以自己指定排序的规则:
通过在sort()中添加一个回调函数来指定排序规则。
arr.sort(function(a,b){})
回调函数需要定义两个形参,浏览器会分别使用数组中的元素作为实参去调用回调函数,调用哪一个元素我们不确定,但能确定的是a对应的数组元素一定在b对应的元素前边。
浏览器会根据回调函数的返回值来决定元素的顺序:
- 如果返回的是一个大于0的值,则元素会交换位置
- 如果返回的是一个小于0的值,则元素不会交换位置
- 如果返回的是0,则认为元素相等,位置不变
所以我们在回调函数中可以添加代码:
- 如果需要升序,则返回a-b
- 如果需要降序,则返回b-a
arr.sort(function(a,b){return a-b})
数组遍历
所谓的数组遍历,就是将数组中的所有元素都取出来:
for(var i = 0;i<arr.length;i++){
console.log(arr[i])
}
数组的foreach方法
除了使用for循环来遍历数组外,还可以使用数组的foreach()方法来遍历数组,但是该方法只支持IE8以上的浏览器。
foreach()方法需要一个函数作为形参,该函数数组中有多少个元素就会被调用多少次,每次执行时浏览器都会将遍历到的元素以实参的方式传递进来,我们可以定义形参来读取这些内容
浏览器每次调用函数都会传递三个参数:
第一个:就是正在当前遍历的元素
第二个:就是当前正在遍历元素的索引
第三个:就是当前正在遍历的数组
我们一般只使用前两个参数:
arr.foreach(function(number,index){
console.log("元素="+number+",索引是"+index)
})