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