在JavaScript中,所有的一切都是對象,為了便於開發工作,JavaScript提供了處理字符串、數學運算、日期和時間、正則表達式和數值等一系列的內置對象,它們都遵從ECMAScript1.0規范,因此在所有平台下這些對象的功能和表現都是一樣的。
數組是一種具有相同類型值的集合,它的每一個值稱為數組的一個元素。數組用於在內存中存儲大量相同類型的數據,可以通過數組的名稱和下標來訪問數組中的元素。
數組的下標也成為索引值,有兩種類型的索引值:非負整數和字符串索引值。使用字符串索引值的數組又稱為關聯數組。數組是JavaScript的一種內置對象。
聲明數組
和其它變量一樣,數組在啊使用之前需要聲明,即創建數組對象。聲明數組的語法有三種形式:
var arr = new Array(); var arr = new Array(n); var arr = new Array(e0,e1,e2,...e(m));
第一種聲明形式聲明了一個空的數組,它的元素個數為0;第二種聲明形式聲明了一個有n個元素的數組,但每一個元素的值還沒有定義;第三種聲明形式聲明了有m個元素的數組,它的各個值依次為e0,e1,e2,...e(m)。例如:
var arr1 = new Array(); //創建一個空數組
var arr2 = new Array(100); //創建有100個元素的數組
var arr3 = new Array("red","blue","green",1,2,3);//創建有6個值得數組
JavaScript的數組是動態數組,在聲明數組的時候,無論是否值得了數組的元素個數,都可以根據需要調整元素的數量。JavaScript按需要分配內存,動態擴展和壓縮數組。數組元素通過下標來訪問,下標放在放括號[]中。當數組下標為整數時,下標從0開始計數。
和其它編程語言不同的是,JavaScript數組可以存儲任何類型的的值,也就是說,數組中第一個元素可以存儲數值,第二個元素可以存儲字符串類型的值,第三個元素可以存儲對象等等。
在JavaScript中,可以使用字符串來作為數組的下標來訪問數組。通過字符串下標來訪問數組稱為關聯數組。字符串下標通常稱為鍵。下面是一個例子:
var states = new Array(); states["京"] = "北京市"; states["翼"] = "河北省"; states["豫"] = "河南省"; states["粵"] = "廣東省"; states["閩"] = "福建省";
數組的屬性和方法
數組是JavaScript中的一個對象,它有一組屬性和方法。下表是數組的屬性:
| 屬性 | 含義 |
| constructor | 引用數組對象的構造函數 |
| length | 返回數組元素的個數。如果在創建數組時指定了數組的長度,那么無論數組元素中是否超出了實際數據,該屬性的值都是這個指定的長度值 |
| prototype | 用於在定義數組時添加新的屬性和方法。Prototype是數組對象的靜態屬性。 |
其中最常用的是length屬性,它通常用於在for循環中遍歷數組時使用。
數組提供了12個有用的方法,利用這些方法可以使用數組實現棧操作、數組元素排序、顛倒數組元素、將數值拼接為一個字符串等。下表中列出了這些方法:
| 方法 | 含義 |
| cancat(value,...) | 將兩個數組合並為一個新的數組,參數指定的數組的數組元素放在后面。該方法的參數可以是一個數組,也可以是一組值。 |
| join(separator) | 使用指定的分隔符(separator)將數組元素依次拼接起來,形成一個字符串返回。 |
| push(value,...) | 在數組末尾增加一個活多個數組元素(增加的元素數量與參數個數相同),並返回增加元素后的數組長度。該操作相當於數據結構中的入棧操作。 |
| reverse() | 顛倒數組中元素的次序。例如,如果數組中各個元素的值依次為1/2/3/4/5,那么執行reverse()方法之后,數組的值依次為5、4、3、2、1。 |
| shift() | 刪除數組的第一個元素,並返回其值,數組的長度減少1.該操作相當於數據結構中的出隊列操作。 |
| slice(start,end) | 從現有數組中提取指定個數的數據元素,形成一個新的數組。所提取元素的下標從start開始,到end結束,但不包括end。 |
| sort(orderfunc) | 將數組元素排序。參數orderfunc可選。省略該參數時,按字母順序或漢字的拼音方式排序。可以使用orderfunc來指定排序方式。orderfunc為排序函數的名稱,該函數應該使用兩個參數,並返回一個整數值。返回值的要求是:當第一個參數大於第二個參數時,返回值大於0;當第一個參數等於第二個參數時,返回值等於0;當第一個參數小於第二個參數時,返回值小於0。 |
| splice(start,delteCount,value...) | 從start指定的位置開始,刪除delteCount個數組元素,然后在刪除位置前面添加於value值個數相同的數組元素,並以此將其值設置為value參數指定的值。該函數的功能相當於文本編輯器中的替換功能。 |
| toLocaleString() | 返回數組的本地化字符串表示。 |
| toString() | 返回數組的字符串表示。 |
| unshift(value,...) | 在數組的開始位置增加一些數組元素,增加的數組元素的數量與value參數的個數相同,並依次使用參數value對各數組元素賦值。 |
下面是上面常用函數的一些應用示例。
concat()方法應用示例
concat()方法將兩個數組合並為一個新的數組。
var arr1 = new Array("紅色","藍色","綠色");
var arr2 = new Array("粉紅色","紫色");
var arr3 = arr1.concat(arr2);
document.write(arr3); //合並后的數組arr3為:紅色,藍色,綠色,粉紅色,紫色
join()方法應用示例
join()方法使用指定的分隔符將數組元素拼接為一個字符串返回。
var arr1 = new Array("紅色","藍色","綠色");
var arr2 = new Array("粉紅色","紫色");
var arr3 = arr1.concat(arr2);
document.write(arr3.join("-"));//合並后的數組arr3調用join()方法的結果為:紅色-藍色-綠色-粉紅色-紫色
push()方法應用示例
push()方法在數組末尾添加一個或多個元素。
var arr = new Array("紅色","藍色","綠色");
arr.push("粉紅色","紫色");
document.write(arr); //調用push方法后數組的值為:紅色,藍色,綠色,粉紅色,紫色
pop()方法應用示例
pop()方法從數組末尾刪除一個元素,並返回其值。
var arr = new Array("紅色","藍色","綠色");
var value = arr.pop();
document.write(arr); //調用pop方法后數組的值為:紅色,藍色
alert("返回的值為:"+value); //返回的值為:綠色
shift()方法應用示例
shift()方法從刪除數組中的第一個元素,並返回其值。
var arr = new Array("紅色","藍色","綠色");
var value = arr.shift();
document.write(arr); //調用shift方法后數組的值為:藍色,綠色
alert("返回的值為:"+value); //返回的值為:紅色
unshift()方法應用示例
unshift()方法在數組第一個元素前面增加一些數組元素。
var arr = new Array("紅色","藍色","綠色");
arr.unshift("粉紅色","紫色");
document.write(arr); //調用unshift方法后數組的值為:粉紅色,紫色,紅色,藍色,綠色
sort()方法應用示例
sort()方法排序數組中的元素,既可以使用默認的方法,也可以自定義排序方法。
sort() 默認排序
var arr = new Array("2","11","1","25","12","90","36","28","100");
arr.sort();
document.write(arr); //調用默認sort方法后數組的值為:1,100,11,12,2,25,28,36,90
上面使用的是默認的排序非常,默認方式下,數組以ASCII值的大小來進行排序。我們可以自定義排序的方法,如果需要按照數字的大小來排序,可以像下面這樣:
function mysortfunc(str1,str2){
return parseInt(str1) - parseInt(str2);
}
var arr = new Array("2","11","1","25","12","90","36","28","100");
arr.sort(mysortfunc);
document.write(arr); //調用自定義sort方法后數組的值為:1,2,11,12,25,28,36,90,100
reverse()方法應用示例
reverse()方法顛倒數組中的所有元素。
var arr = new Array("2","11","1","25","12","90","36","28","100");
arr.reverse();
document.write(arr); //調用reverse方法后數組的值為:100,28,36,90,12,25,1,11,2
slice()方法應用示例
slice()方法將一個數組中的部分元素復制到一個新的數組中。它的第一個參數指定從哪個下標開始復制數組,第二個參數指定復制結束的數組元素下標,slice()方法不復制第二個參數指定的元素。
var arr = new Array("Sun","Mon","Tues","Wed","Thurs","Fri","Sat");
var sliceArr = arr.slice(1,3); //從下標1開始,截取到下標為3的元素,不包括下標為3的元素
document.write(sliceArr); //調用slice方法后數組的值為:Mon,Tues
splice()方法應用示例
splice()方法從指定的數組下標開始刪除指定個數元素,然后可以使用一組新的數組元素代替被刪除的元素。該方法第一個參數指定開始的數組下標,第二個參數指定要刪除的元素個數,后面的參數為要插入的元素。
var arr = new Array("Sun","Mon","Tues","Wed","Thurs","Fri","Sat");
arr.splice(1,3,"星期一","星期二","星期三");//從下標1開始,刪除3個元素,並將后面參數指定的元素插入到刪除的位置
document.write(arr); //調用slice方法后數組的值為:Sun,星期一,星期二,星期三,Thurs,Fri,Sat
