一维数组
创建数组
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);
|
增加数据元素,长度自动增加
1 2 3 4
| var array = [1,2,3,4,5,6,7]; document.write(arr.length); arr[10] = 10; document.write(arr.length);
|
二维数组
1 2
| 一维数组表示 array[]; 二维数组表示 array[][];
|
二维数组的两个维度的索引值也是从0开始,两个维度的最后一个索引值为长度-1。
定义二维数组
方法一:
1 2 3 4 5 6 7
| var array=new Array(); for(var i=0;i<2;i++){ array[i]=new Array(); for(var j=0;j<3;j++){ array[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/>"); 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,但是如果中间有未赋值的元素,循环就在未赋值元素这里断掉了。