1. 程式人生 > >javascript之陣列

javascript之陣列

無論哪一種語言都離不開陣列,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;