javascript数组

一维数组

创建数组
1
2
var array = new Array();//创建新数组,该数组为空,没有值,输出会显示undefined
var array = new Array(10);//创建数组同时指定长度,但是实际上数组是变长的,即使指定10个长度,也可以把元素存在规定长度以外。
数组赋值

数组存储的数据可以是任何类型

1
2
3
4
5
6
7
8
9
10
var array = new Array();
第一种:
array = "this is a test";
第二种:
array[0] = 1;
array[1] = 2;
第三种:
var array = new Array(1,2,3,4,5);//创建的同时赋值
第四种:
var array = [1,2,3,4,5];//直接输入一个数组("字面量数组")

向数组新增元素

直接使用下一个未用的索引

1
2
3
var array = new Array(3);
array[0] = 1;
array[1] = 2;//再添加一个元素

使用数组中元素

引用数组变量并提供索引

1
2
3
4
5
6
var arr=new Array();
arr[0]="小红";
arr[1]="小明";
arr[2]="小亮";
arr[3]="小川";
document.write("第二人的姓名是:"+ myarr[1] );
获取数组长度

使用length属性,返回数组长度。因为数组的索引总是由0开始,所以一个数组的索引的上下限分别是:0 和 length-1

1
2
var array = [1,2,3,4,5,6,7];
document.write(array.length); //获取数组长度,显示7

JavaScript中,数组的长度是可变的:

  • 重新指定数组长度

    1
    2
    array.length = 10;//增大数组长度
    document.write(array.length); //获取数组长度,显示10
  • 增加数据元素,长度自动增加

    1
    2
    3
    4
    var array = [1,2,3,4,5,6,7]; // 包含7个数值的数组
    document.write(arr.length); //显示数组的长度7
    arr[10] = 10; //增加元素,使用索引为10,赋值为34
    document.write(arr.length); //显示数组的长度11

二维数组

1
2
一维数组表示 array[];
二维数组表示 array[][];

二维数组的两个维度的索引值也是从0开始,两个维度的最后一个索引值为长度-1。

定义二维数组

方法一:

1
2
3
4
5
6
7
var array=new Array(); //先声明一维
for(var i=0;i<2;i++){ //一维长度为2
array[i]=new Array(); //再声明二维
for(var j=0;j<3;j++){ //二维长度为3
array[i][j]=i+j; // 赋值,每个数组元素的值为i+j
}
}

方法二:

1
var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3]]

赋值:

1
2
myarr[0][1]=5; //将5的值传入到数组中,覆盖原有值。
说明: myarr[0][1] ,0 表示表的行,1表示表的列。

编程练习

做慕课网的编程练习时,发现一个有趣的事情。
如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//创建数组
var array = ['*','##',"***","&&","****","##*"];
array[7] = "**";
var tmp = new Array();
//显示数组长度
document.write(array.length);
var j = 0;
//将数组内容输出,完成达到的效果。
for(var i=0; i<array.length;i++){
if(array[i].indexOf('*') != -1){
tmp[j] = array[i];
j++;
}
}
tmp.sort();
for(var i=0;i<tmp.length;i++){
document.write(tmp[i]+"<br/>");
}

这样是打印不出tmp数组结果的,一直没想通,后来试着改成这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//创建数组
var array = ['*','##',"***","&&","****","##*"];
array[6] = "**";
var tmp = new Array();
//显示数组长度
document.write(array.length);
var j = 0;
//将数组内容输出,完成达到的效果。
for(var i=0; i<array.length;i++){
if(array[i].indexOf('*') != -1){
tmp[j] = array[i];
j++;
}
}
tmp.sort();
for(var i=0;i<tmp.length;i++){
document.write(tmp[i]+"<br/>");
}

发现有结果了,数了数,发现原来的代码中array[6]并没有被赋值,在原来的代码中加入了一句打印的代码,发现array[6]是undefined

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//创建数组
var array = ['*','##',"***","&&","****","##*"];
array[7] = "**";
document.write(array[6]+"<br/>");//打印结果是undefined
var tmp = new Array();
//显示数组长度
document.write(array.length);
var j = 0;
//将数组内容输出,完成达到的效果。
for(var i=0; i<array.length;i++){
if(array[i].indexOf('*') != -1){
tmp[j] = array[i];
document.write("<br/>"+"i:"+i+"j:"+j+tmp[j]+"<br/>");
j++;
}
}
tmp.sort();
for(var i=0;i<tmp.length;i++){
document.write(tmp[i]+"<br/>");
}

其中

1
document.write("<br/>"+"i:"+i+"j:"+j+tmp[j]+"<br/>");

的打印结果是

1
2
3
4
5
6
7
i:0j:0*
i:2j:1***
i:4j:2****
i:5j:3##*

i是取不到6以后的,所以其实虽然数组的长度是8,但是如果中间有未赋值的元素,循环就在未赋值元素这里断掉了。

文章目录
  1. 1. 一维数组
    1. 1.1. 创建数组
    2. 1.2. 数组赋值
    3. 1.3. 向数组新增元素
    4. 1.4. 使用数组中元素
    5. 1.5. 获取数组长度
  2. 2. 二维数组
    1. 2.1. 定义二维数组
  3. 3. 编程练习