一、创建数组
1.使用Array对象创建数组
var arr1=new Array('Beijing','Shanghai'); //元素为字符型
var arr2=new Array(10,20); //元素为数值型
var arr3=new Array(10,'abc',null,true,undefined); //元素为混合型
var arr4=new Array(); //空数组 或 var arr4=new Array;
2.使用"[ ]"创建数组(只需将上例的new Array()替换为[ ]),代码演示:
var arr1=['Beijing','Shanghai']; //相当new Array('Beijing','Shanghai')
var arr2=[ ]; //相当new Array
var mood=['sad', , , ,'happy'];
console.log(mood); //控制台输出结果:["sad",empty*3,"happy"]
二、数组的基本操作
1. 获取数组长度(arr.length)
var arr1=[1,2,3,4]; //数组arr1长度为4
var arr2=['a', , , ,'b','c'] //数组arr2长度为6
注:没有值的数组元素会占用空储存位置.
2. 用length修改数组长度,代码演示:
var arr1=[ ];
arr1.length=5;
console.log(arr1); //输出结果:(5) [empty*5]
var arr2=[1,2,3 ];
arr2.length=4;
console.log(arr2); //输出结果:(4) [1,2,3,empty]
var arr3=[1,2,3,4 ];
arr3.length=3;
console.log(arr3); //输出结果:(3) [1,2,3]
在利用Array对象创建数组时,也可以指定数组长度,演示代码:
var arr=new Array(3);
console.log(arr); //输出结果:(3)[empty*3]
3. 数组元素的访问
vaf arr=['a','b',22,true];
console.log(arr[0]); //输出结果:a
console.log(arr[2]); //输出结果:22
console.log(arr); //输出结果:(4) ['a','b',22,true]
4. 数组元素的遍历(只说for...in和for...of)
var arr1=[1,2,3];
for(var i in arr){ //for...in
console.log(arr[i]);//结果:1,2,3
} //这里i指的是数组元素下标
var arr2=[4,5,6];
for(var value of arr){ //for...of
console.log(value); //结果:4,5,6
} //这里value指的是数组元素的值
5. 元素的添加 (通过"数组名[下标]=值"的方式添加数组元素时,允许下标不按数字顺序连续添加,其中未设置具体的元素,会以空存储位置的形式存在;即使添加元素的下标的顺序不同,在遍历数组时,仍然会按照数组下标从小到大的顺序展示),代码演示:
var arr1=[ ]; //为空数组添加元素
arr1[0]=3;
arr1[3]=2;
arr1[5]=1;
console.log(arr1); //输出结果:(6) [3,empty*2,2,empty,1]
var arr=['a','b',]; //为非空数组添加元素
arr[2]='two';
arr[3]='three';
console.log(arr); //输出结果:(5) ["a","b","two","three"]
6. 元素的修改,代码演示:
var arr=['a','b','c','d'];
arr[2]=22;
arr[3]=33;
console.log(arr); //输出结果:(4) ["a","b",22,33]
7.元素的删除(delete 只能删除数组中指定下标的元素值,删除后该元素仍然占用一个空存储位置),代码演示:
var stu=['Jack','Mike','Tom'];
console.log(stu); //输出结果: (3) ["Jack","Mike","Tom"]
delete stu[1]; //删除数组中第2个元素
console.log(stu); //输出结果: (3) ["Jack",empty,"Tom"]
8.解构赋值(ES6中提供)
var arr=[1,2,3]; //传统方式
var a=arr[0];
var b=arr[1];
var b=arr[2]; //传统方式
[a,b,c]=[1,2,3]; //解构赋值
解构赋值右侧的内容可以是一个变量, 代码演示:
var arr=[1,2,3];
[a,b]=arr;
console.log(a+'-'+b); //输出结果: 2-1
通过解构赋值交换两个变量的值, 代码演示:
var a=1, b=2;
[a, b]=[b,a];
console.log(a+'-'+b); //输出结果: 2-1
注:当"="左侧变量的数量小于右侧的元素的个数时,则忽略多余的元素;当左侧变量的数量大于右侧的元素个数时,多余的变量会被初始化为undefined.
三、常见二维数组操作
1.通过多维空数组添加元素的方式创建多维数组(若要为二维数组赋值,首先要保证添加的元素已经被创建为数组),代码演示:
var arr=[ ]; //创建一维空数组
for(var i=0;i<3;++i){
arr[i]=[ ]; //将当前元素设置为数组
arr[i][0]=i; //为二维数组元素赋值
}
2.二维数组转置案例
结果:
四、数组排序
1.冒泡排序:(不断比较数组中相邻的两个元素的值,较小或较大的元素前移或者较小或较大的元素后移),代码示例:
结果:
2.插入排序(待排序的数组的第1个元素会被看作是一个有序数组,从第2个至最后一个元素会被看作是一个无序数组)
结果:
五、常见数组方法
1.栈和队列方法
结果:
2.检索方法
includes() 用于确定数组中是否含有某个元素,含有返回true,否则返回false
Array.isArray() 用于确定传递的值是否是一个Array,是返回true,不是返回false
indexOf() 返回在数组中可以找到给定值的第1个索引,如果不存在,返回-1
lastIndexOf() 返回指定元素在数组中最后一个的索引,如果不存在,返回-1
注:除了Array.isArray()外,其余方法默认都是从指定数组索引的位置开始检索并且索引方式与"==="相同,即只有全等时才会返回比较成功的结果
1)includes() ,Array.isArray()
2)indexOf()
结果:
3)lastIndexOf() 从数组的末尾向开头检索
结果:
3.数组转字符串
join() 将数组的所有元素连接到一个字符串中
toString() 返回一个字符串,表示指定的数组及其元素
join()和toString()方法可将多维数组转为字符串,默认情况下使用逗号连接;join()方法可以指定连接数组元素的符号。此外,当数组元素为undefined、null或空数组时,对应的元素会被转换为空字符串。
4.介绍其他常用的数组方法
sort() 对数组的元素进行排序,并返回数组
fill() 用一个固定值填充数组中指定下标范围内的全部元素
reverse() 颠倒数组中元素的位置
splice() 对一个数组在指定下标范围内删除或添加元素
slice() 从一个数组的指定下标范围内拷贝数组元素到一个新数组中
concat() 返回一个合并两个或多个数组后的新数组
注:slice()和concat()方法在执行后返回一个新的数组,不会对原数组产生影响,剩余的方法在执行后皆会对原数组产生影响.
splice()方法使用
结果: