數組有四種定義的方式
使用建構子:
var a = new Array();
var b = new Array(8);
var c = new Array("first", "second", "third ");
或陣列直接量:
var d = ["first", "second", "third"];
屬性
Array只有一個屬性,就是length,length表示的是陣列所佔記憶體空間的數目,而不僅僅是數組中元素的個數,在剛才定義的數組中,b.length的值為8
<script><br/>var a = new Array("first", "second", "third" )<br/>a[48] = "12"<br/>document.write(a.length)<br/>//顯示的結果是49<br/></script>
數組的length屬性是可寫的,這是一個非常有趣的屬性,我們可以透過這個方法來截取陣列
<script><br/>var a = new Array("first", "second", "third")<br/>delete a[1]<br/>document.write(a.length)<br/>/ /顯示的結果是3,表示即使刪除也無法改變陣列的長度<br/>var a = new Array("first", "second", "third")<br/>a.length = 1<br/>document.write(a.length) <br/>//顯示的結果是1,說明只剩下一個元素了<br/></script>
方法
這裡並沒有包括IE和FF並不相容的一些方法:
toString():把陣列轉換成一個字符字串
toLocaleString():把陣列轉換成一個字串
join():把陣列轉換成一個用符號連接的字串
shift():將陣列頭部的一個元素移出
unshift():在陣列的頭部插入一個元素
pop():從數組尾部刪除一個元素
push():把一個元素加到數組的尾部
concat():給數組添加元素
slice():傳回數組的部分
reverse( ):將陣列反向排序
sort():對陣列進行排序運算
splice():插入、刪除或取代一個陣列元素
toString()方法,toLocaleString()方法的作用類似,FF下的作用是完全相同的,IE的話如果元素是字串,會在「,」後面加上一個空格,如果元素是數字,會擴展到兩位小數,兩者都會改變字串的length屬性,所以考慮到相容性,盡量不要使用toLocaleString()方法。
<script><br/>var a = new Array(1, 2, 3, [4, 5, [6, 7]])<br/>var b = a.toString() //b為字串形式的"1, 2, 3, 4, 5, 6, 7"<br/>var c = new Array(1, 2, 3, [4, 5, [6, 7]])<br/>var d = c.toLocaleString() //d為字串形式的"1, 2, 3, 4, 5, 6, 7"<br/>//toString()方法和toLocaleString()方法都可以拆解多維數組<br/></script>
join()方法將數組中的所有元素轉換成字串,然後連接起來,這剛好和String的split()方法是一個相反的操作。 join()預設是使用「,」作為分隔符,當然你也可以在方法中指定分隔符號
<script><br/>var a = new Array("first", "second", "third")<br/>var s = a.join("...")<br/>document.write(s)<br/>//顯示的結果是「first...second...third」<br/></script>
pop()方法可以從陣列尾部刪除若干個元素,push()方法把一個元素加到數組的尾部,這兩個方法剛好是兩個相反的操作。兩個都是對原來的陣列進行操作,但是要注意push()方法傳回的是新的陣列的長度,而pop()方法則傳回被刪去的那個元素。
<script><br/>var a = new Array(1, 2, 3)<br/>var b = a.push(4,5,[6,7]) //a為[1, 2, 3, 4, 5 , [6, 7]] b為6 注意tbpush()方法不會幫你開啟一個陣列<br/>var c = new Array(1, 2, 3, 4, "first")<br/>var d = c.pop() //c為[1, 2, 3, 4] d為字串形式的"first"<br/></script>
shift()方法可以從數組頭部刪除一個元素,unshift()方法把若干元素加到數組的頭部,這兩個方法剛好是兩個相反的操作。兩個都是對原來的陣列進行操作,但是要注意unshift()方法傳回的是新的陣列的長度,而shift()方法則傳回被刪去的那個元素。
<script><br/>var a = new Array(1, 2, 3)<br/>var b = a.unshift(4,5,[6,7]) //a為[4, 5, [6, 7] , 1, 2, 3] b為6 注意unshift()方法不會幫你打開一個數組,還有就是被插入數值的順序<br/>var c = new Array("first", 1, 2, 3, 4) <br/>var d = c.shift() //c為[1, 2, 3, 4] d為字串形式的"first"<br/></script>
concat()方法可以回傳一個在原有數組上增添了元素的數組,元素以“,”分隔,元素中如果有數組,將被展開並繼續添加,但不支援多維數組形式的展開式添加
<script><br/>var a = new Array("first", "second", "third")<br/>s = a.concat("fourth",["fifth", "sixth"],["seventh", [ "eighth", "ninth"]])<br/>document.write(s[7])<br/>//顯示的結果是“eighth, ninth”,說明“eighth, ninth”是以數組的形式被添加了進去,此是s的值為["first", "second", "third", "fourth", "fifth", "sixth", "seventh", ["eighth", "ninth"]]<br/></script>
slice()方法傳回數組的一個片段,或者說是子數組。 slice()的參數表示字數組的始末位置,如果只有一個參數,就表示從該處開始一直取到最後,如果參數出現負數,則表示倒數的某個位置。 slice(start,end) //表示陣列從下標為start(包含這個)的地方開始到end(不包含這個)
<script><br/>var a = new Array(1, 2, 3, 4, 5)<br/>var b = a.slice(3) //b為[4, 5]<br/>var c = a.slice(-3) //c為[3, 4, 5]<br/>var d = a.slice (1,-1) //d為[2, 3, 4]<br/>var e = a.slice(-3,-1) //e為[3, 4]<br/></script>
reverse()方法將數組反向排序,他不會創建和傳回一個新的數組,而是在原有的數組上操作
<script><br/>var a = new Array("first", "second", "third") <br/>a.reverse()<br/>document.write(a)<br/>//顯示的結果是“third,second,first”,這時候數組的順序已經顛倒了<br/></script>
sort()方法的作用是對陣列進行排序,這是一個非常奇特的方法,我不知道當初創作他的人是出於懶惰還是聰明,這是一個讓我印象深刻的方法。
sort()方法的參數是一個有兩個參數,且有傳回值的函數,如果傳回的值大於零,則表示前一個參數比後一個參數大,等於零則相等,小於零說明前一個參數比後一個小,而相對小的那個參數將出現在排序的前列。
sort()方法直接在陣列上進行操作,同時也傳回值,但是兩者似乎是等價的。 sort()方法預設是用字母的順序進行排序
<script><br/>var a = new Array(33, 4, 111, 543)<br/>a.sort(way)<br/>function way(x, y){<br/>a.sort(way)<br/>function way(x, y){<br/>a.sort(way)<br/> (x % 2 ==0) <br/> return 1;<br/> if (x % 2 !=0) script><br/>splice ()方法的作用是插入、刪除或取代一個陣列元素,他tb不光會在原有的陣列上進行修改,還會傳回被處理掉的內容,因此這是一個功能強大,但是不容易使用的方法, splice()方法以前兩個參數進行定位,餘下的參數表示插入部分。 <br/></script>
<script><p>var a = new Array(1, 2, 3, 4, 5)<br/>var b = a.splice(2) //a為[1, 2] b為[3, 4, 5] <br/>var c = new Array(1, 2, 3, 4, 5)<br/>var d = c.splice(2,2) //c為[1, 2, 5] d為[3, 4]<br/>var e = new Array(1, 2, 3, 4, 5)<br/>var f = f.splice(-4,2) //e為[1, 4, 5] f為[2, 3]<br/>var g = new Array(1, 2, 3, 4, 5)<br/>var h = g.splice(-2,-2) //第二個參數表示長度,因此負數在此無效<br/> <br/>var i = new Array(1, 2, 3, 4, 5)<br/>var j = i.splice(2,2,"first","second","third") //i為[1, 2, "first", "second", " third", 5] j為[3, 4] 後面部分會自動前後移動,以保持陣列的連續性<br/>var k = new Array(1, 2, 3, 4, 5)<br/>var l = k.splice( 2,2,["first","second"],"third") //k為[1, 2, ["first", "second"], "third", 5] l為[3, 4] splice()方法不會展開數組,只直接寫入<br/></script>