无论哪一种语言都离不开数组,javascript也不例外。数组是值的有序集合,这些值称为元素。数组有序不是说值的内容大小排序,是位置有序。位置可以用数字表示,称为索引。由于javascript是软类型的,所以数组也是无类型的。这个意思呢就是数组中可以放任意类型的值,可以是String、Number、Boolean、null、undefined、对象、数组、表达式等,每个数组中的元素可以为不同类型。
创建数组:
直接创建:
varempty=[ ];//空数组 var arr=[1,2,3,4];//含有四个元素的数组var misc=[1,”a”,true,];//含有3个不同类型值的数组。注意在数组中是允许以逗号结尾的,所以[,,]这样的是两个元素,不是三个。
调用构造函数Array()创建:
调用时没有参数:vara=new Array();
调用指定长度:vara=new Array(10);//注意没有逗号,数组中也没有存储任何值,访问a[0]、a[1]…等都是undefined
调用有元素:vara=new Array(1,2,3,”test”);
数组元素的读写:
使用[ ]操作符访问数组中的元素。数组是可以动态添加元素的var a=[]; a[0]=1;a[1]=2;a.length;//2
在javascript中数组也是对象,也有属性。所有的索引都是属性,但是只有在0-232-2之间的整数属性才是索引。注意可以使用负数或非整数来索引数组,这种情况下数值转为字符串来作为属性名,就是给数组添加属性。var a[1.11]=true;//创建一个名为“1.11”的属性,并赋值为true。如果访问不存在的索引返回undefined。
稀疏数组:
就是包含从0开始不连续的数组。注意当数组创建时省略值不会创建稀疏数组。省略的元素是存在的只不过为undefine罢了。这个和元素不存在有点区别,var a1=[,,,];var a2=new Array(); 0 in a1;//true,在索引0处有元素 0 in a2;//false,a2在索引0处没有元素。在稀疏数组[1,,3]省略的值不存在。
数组长度:
每个数组有一个length属性,就是这个length.区别其他对象。[].length;//0数组中没有元素。[1,2,3].length;//3,最大索引为2,长度为3。对于稀松数组,length大于数组中元素的个数。
可以通过修改length属性的值删除元素。var a=[1,2,3,4,5];a.length;//5a.length=3;//目前a为[1,2,3]a.length=0;//a为[] a.length=6;//长度为6,但是没有元素,就像new Array(6). Length属性值设置为大于当前的数组的长度,只是在数组的末尾创建一个空白区域。
可以使用Object.defineProperty()让数组的length属性变为只读。var a=[1,3,3,4];
Object.defineProperty(a,”length”,{writable:false});将不会修改length属性的值。
数组元素的添加和删除:
索引添加:a=[];a[0]=1;a[2]=3;
Push()方法:在数组末尾增加一个或多个元素,var a=[];a.push(“001”);a.push(“002”,”003”);
Unshift()方法:在数组头部出入一个或多个元素;
Pop():删除数组末尾的元素,length-1,并返回删除的值。
Shift():删除头元素,length-1,并返回删除的值。
Delete():删除数组中索引的位置不再有元素。a=[1,2,3];delete a[0];//数组a在索引0上不再有元素。但是length属性的没有变。
数组遍历:
For循环遍历:var a=[1,2,3]; for(var i=0;i<a.length;i++){//操作}
For/in遍历:能够遍历自有和继承的枚举属性,for(var i in a){if(!a.hasOwnProperty(i)) continue;//判断是不是自有属性,如果不是跳过本次循环}
数组方法:
1. join():将数组中的所有元素转化为字符串并连接在一起,返回。可以在join()中指定分隔符,如果不指定就是默认逗号。var a=[1,2,3];a.join();//返回“1,2,3”.Array.join()和String.split()方法的逆向操作,split是将字符串分割为数组。
2. reverse():将数组中的元素颠倒顺序。
3. sort():将数组中的元素进行排序并返回排序后的数组。如果不传入参数就以字母表的顺序排序;但是要传入参数,就必须传入一个比较函数,这个函数决定了它的两个参数在排序的数组中的先后位置。比较函数返回负数那就是第一个参数在前,返回0他们的顺序无关紧要,返回正数第二个参数在前。
4.concat():Array.concat()方法创建一个数组并返回,返回的数组时连接后的数组。
.....
数组类型:
Array.isArray()判断是不是数组,如果是返回true,不是返回false;