数组以及数组的常用方法
在编程语言中每一门语言都会定义一个或者多个存放数据的集合,而JavaScript
当然也不例外.
在JS中我们使用数组来存放数据.那么到底什么是数组呢?
数组的概念
-
数组的本质是一组可以存放相关数据的集合
-
数组为其中的数据提供了一系列方便访问以及获取的方式
-
数组里面的每个成员称为一个元素,一个数组里面可以存放任意多个以及任意类型的数据也就是说一个JS数组中的元素类型可以不相同
-
数组中的元素与元素之间通过逗号进行分隔
数组的创建
一:使用关键字new创建
var arr1 = new Array(); //创建空数组
var arr2 = new Array(10); //创建一个长度为10的数组
var arr3 = new Array(5,4,3,2,1); //创建数组并初始化
- 数组的创建方法一里面
new
后面跟的是Array
,添加数组可以使用数组索引的方式进行添加
二:直接使用[]进行创建
var arr = []; //创建一个空数组
var arr2 = [1,2,3]; //创建一个有三个元素的数组
- 数组的创建方法二里面使用
[]
这种方式创建数组的话可以直接将元素填写在[]
中.
数组的索引
索引的概念
-
数组中的一个表示元素位置的特殊序列号
-
我们可以通
数组名[索引
来获取某个元素,索引从0
开始,只能取正数 -
我们对数组元素的访问,设置,修改都需要使用索引来完成
实例
var arr = [1,2,3];
alert(arr[2]);
注意:
- 如果访问数组时,使用的索引超出元素的索引对应范围,没有办法得到对应的数据因此返回的结果是
undefined
- 不管数组中元素发生怎样的变化,数组中的索引总是从
0
开始连续的
数组的长度
JS
中数组的长度指的是数组中元素的个数,和数组的索引没有任何的关系- 当数组中的元素个数发生改变时,
length
的值会跟着改变
length语法
var arr = [1, 2, 3]
alert(arr.length)//可以获取到数组的长度
注意:
JS中数组的length属性是可以被修改的
- 如果
length
的值比原始数组的元素个数大,则使用空元素进行填充. - 如果
length
的值比原始数组的元素个数小,则将多余的元素从最后一个开始逐个删掉,而且是不可恢复的删掉.
数组的遍历
遍历的概念
-
将数组的所有元素从头到尾依次访问一遍.
-
因为数组中元素的索引是不会重复的,而且数组的索引必然是连续的,因此我们可以使用
for
循环语法对数组进行遍历. -
我们在遍历数组之前,需要明确数组中的元素个数,因此我们使用数组的属性
length
来获取数组的长度
往数组中添加新元素
数组中元素的添加方式
一,使用索引的方式进行添加元素
实例:
var arr = [1, 2, 3, 4, 5, 6]
arr[arr.length] = 8
document.write(arr)
//最后的结果:1,2,3,4,5,6,8
注意:
- 使用索引添加数组时,添加的元素索引值必须是原数组的长度
- 如果使用的索引小于数组的长度,那么就是修改数组中对应索引的位置了
- 如果使用的索引超出数组的长度,那么中间多出来的元素位置使用空元素进行占位
二,使用push()
函数进行添加
实例
var arr = [1, 2, 3, 4, 5, 6]
arr.push(8)
document.write(arr)
//最后的结果:1,2,3,4,5,6,8
数组的常用方法
数组在JavaScript
中经常使用,如何对数组进行增删改非常重要,下面为数组的常用方法:
在数组末尾插入元素
arr.push(value)
,在数组的末尾添加一个或多个元素,并返回数组的新长度。
例如:
let arr=[1,2,3,4,5]
var longth=arr.push(6,7);
console.log(arr, longth);
- 数组的
arr
的值变为arr[1,2,3,4,5,6,7]
; length
接收返回的是修改后数组的长度7
;
删除数组末尾的元素
arr.pop()
删除索引值最大的元素,并返回被删除的元素。
let arr=[1,2,3,4,5]
var delElement=arr.pop();
console.log(arr, delElement);
arr
的值为[1,2,3,4]
,delElement
的值为5
arr.pop()
的与arr.length
的效果一样,但arr.length
没有返回值;
在数组的头部插入元素
unshift(value);
在数组的头部添加一个或多个元素,并返回数组的新长度
let arr=[1,2,3,4,5]
var length= unshift(0);
console.log(arr,length);//arr的值为[0,1,2,3,4,5];length的值为更改后数组的长度6;
删除数组的头部元素
shift();
删除索引为0
的元素,并返回删除的元素
let arr=[1,2,3,4,5]
var delElement= unshift();
console.log(arr, delElement);
arr
的值为[2,3,4,5]
;delElement
的值为被删除的元素1
;
数组和数组(或元素)的合并
concat()
合并数组或元素,返回新的数组,原数组不会改变
let arr=[1,2,3,4,5]
let newArr=arr.concat([6,7,8],9,10);
console.log(newArr,arr);
newArr
的值为[1,2,3,4,5,6,7,8,9,10]
;arr
的值还是原来的[1,2,3,4,5]
;concat()
还可以复制一个新数组;let copyArr=arr.concat();
//copyArr
的值和arr
的相同
在数组中添加删除或替换元素
splice();
在任意位置添加或删除元素,返回删除或被替换的值,如果没有被删除或替换则返回空数组;splice()
方法会修改原数组的值;
只有一个值时,从当前位置删除到数组末尾
let arr=[1,2,3,4,5];
let num1=arr.splice(1)
console.log(num1;arr)//num=[2,3,4,5];arr=[1];
有两个值时,第一个值为删除的位置,第二个值为删除的个数;
let arr=[1,2,3,4,5];
let num1=arr.splice(2,3)//删除从索引值2开始的3个元素
console.log(num1;arr);// num1=[3,4,5],arr=[1,2]
有三个或者多个值时,第一个值为插入元素的位置,第二个值为替换的个数,后面的值都为插入的新元素;
let arr=[1,2,3,4,5];
let num2=arr.splice(2,1,6,7,8);//从索引值2开始替换掉1个元素,并且插入6,7,8
//如果第二个值为0,则不替换,直接插入6,7,8;
console.log(num2;arr);//被替换的值num2=[3]; arr=[1,2,6,7,8,4,5]
截取复制数组指定位置的内容
slice(开始位置,结束位置);
第二个参数不写默认到尾部,只能从前往后截取;返回的值为截取到的内容形成的新数组;
let copyArr=arr.slice(); // slice()或者slice(0)都可以复制数组;
let arr=[1,2,3,4,5];
let newArr=arr.slice(1,3);//截取索引1到索引3(不包括3)的值;
console.log(newArr,arr);//newArr=[2,3];arr=[1,2,3,4,5];
slice()
方法不会更改到原数组的值
指定字符连接字符串
join();
数组的每个元素以指定的字符连接形成新字符串返回;
let arr=[1,2,3,4,5];
let newArr=arr.join()//默认用逗号连接
console.log(newArr);//newArr=1,2,3,4,5;
//如果连接符为空字符串,则会无缝连接
console.log(arr.join(“”));//输出为12345;
将数组进行排序
sort()
将数组进行排序(升序),返回新数组,原数组也会改变;
let arr=[2,3,5,1,4];
let newArr=arr.sort();
console.log(newArr,arr);//newArr=[1,2,3,4,5]; arr r=[1,2,3,4,5]
将数组进行倒序
reverse();
可以将数组进行倒序,并返回新数组,原数组也会随之改变;
let arr=[1,2,3,4,5];
let newArr=arr. reverse();
console.log(newArr,arr);//newArr=[5,4,3,2,1]; arr=[5,4,3,2,1];