调用构造函数Array()是创建数组的另一种方法。三种方式调用构造函数:
1、调用时没有参数
var a=new Array();
该方法创建一个没有任何元素的空数组,等同于数组直接量[]。
2、调用时有一个数值参数,它指定长度:
var a=new Array(10);
该技术创建指定长度的数组。当预先知道所需元素个数时,这种形式的Array()构造函数可以用来预分配一个数组空间。注意,数组中没有存储值,甚至数组的索引属性“0”、“1”等还未定义。
3、显式指定两个或多个数组元素的一个非数值元素:var a=new Array(5,4,3,2,1,"testing,testing");
以这种形式,构造函数的参数将成为新数组元素。使用数组字面量比这样使用Array()构造函数要简单多了。
数组是对象的特殊形式。
数组索引仅仅是对象属性名的一种特殊类型,
数组的索引和对象的属性名
所有的数组都是对象,可以为创建任意名字的属性。
稀疏数组就是包含从零开始的不连续索引的数组。数组的length属性值代表数组中元素的个数。length属性值大于元素个数时即稀疏数组。
用Array()构造函数或简单地指定数组的索引值大于当前的数组长度来创建稀疏数组。
o={x:1,y:{z:[false,null,""]}}; s=JSON.stringify(o); p=JSON.parse(s); console.log(s);//{"x":1,"y":{"z":[false,null,""]}} console.log(p); var count=[1,,3] console.log(count[1]) console.log(count.length) var undefs=[,,] console.log(undefs[0]) console.log(undefs.length) var misc=[1.1,true,"a",] console.log(misc.length) console.log(misc[3]) console.log(misc[2]) var a=["world"]; var value=a[0]; a[1]=3.14; i=2; a[i]=3; a[i+1]="hello"; a[a[i]]=a[0]; console.log(a[a[i]]=a[0])//world a=new Array(5); a=[]; a[1000]=0; var a1=[,,,];//undefined,undefined,undefined var a2=new Array(3); console.log(a1.length);//3 console.log(0 in a1); console.log(0 in a2);//false var a=[1,,3]// 稀疏数组 console.log(a.length) console.log(a[1]) var a1=[,]; var a2=[undefined]; console.log(0 in a1)//false console.log(0 in a2)//true a=[1,2,3,4,5,] console.log(a.length)//5 a.length=3; console.log(a.length)//3 console.log(a[0],a[1],a[2],a[3])//1 2 3 undefined a.length=0;//删除所有元素。a为[] a.length=5; console.log(a.length)//5 console.log(a[0],a[1])//undefined undefined //Object.defineProperty()//让数组的length属性变成只读的 var a=[0,1,2,3,4] Object.defineProperty(a,"length",{writable:false});//让length属性只读 a.length=3; console.log(a.length);//5 console.log(a[0],a[1],a[2])//0 1 2 var a=[];//开始一个空数组 a[0]="zero";//向其中添加元素 a[1]="one"; console.log(a.length)//2 a=[]; a.push("zero")//在末尾添加一个元素 a.push("one","two") console.log(a.length)//3 console.log(a[1])//one a.unshift("three")//在数组的首部插入一个元素 console.log(a[0])//three
从数组中删除一个元素,他就变成稀疏数组了。
a=[1,2,3]; delete a[1]; console.log(1 in a)//false console.log(a.length)//3delete操作并不影响数组长度
var keys=Object.keys(o);//获得o对象属性名组成的数组 var values=[];//在数组中存储匹配属性的值 for(var i=0;i<keys.length;i++){ var key=keys[i];//获得索引处的键值 values[i]=o[key];//在value数组中保存属性值 } console.log(values.length)
多维数组
var table=new Array(10); for (var i = 0; i < table.length; i++) { table[i]=new Array(10); }; //初始化数组 for (var row = 0; row < table.length; row++) { for(col=0; col<table[row].length;col++){ table[row][col]=row*col; } }; var product=table[3][8] console.log(product)//24
数组的方法:
join();