陣列物件 Array
- 詳細內容
- 分類:Javascript
- 發佈:2013-02-18, 週一 22:32
- 點擊數:4083
陣列是一種資料的集合,在javascript中,陣列也是物件。
既然是物件,就能藉由建構子來進行物件的建立。
陣列(Array)物件的建立:
有三種方式能建立陣列物件:
1. 使用 new 敘述宣告陣列長度。
下面這行程式會建立一個長度10的陣列物件:
var myarray=new Array(10) ;
2. 使用 new 敘述宣告,並給定陣列初始值。
下面這行程式會建立一個長度4的陣列物件:
var myarray=new Array("Welcome","To","Vic's","Blog");
3. 使用實字直接宣告。
下面這行程式會建立一個空的陣列物件:
var myarray=[];
建立一個長度為2的陣列物件:
var myarray= [ "Hi" , "Vic" ] ;
陣列的索引是由零開始的,陣列的長度是指陣列中包含的元素(element)個數。
陣列的長度是可以在程式中自由增加或是減少的。
陣列物件建立完成之後,就可以使用所引來操作陣列的元素:
var myarray= [ "Hi" , "Vic" ] ; document.writeln(myarray[0]); // 輸出 Hi
在使用new敘述建立陣列物件時,很容易犯下一個邏輯上的錯誤。
假設我們使用new來建立一個含有一個元素的字串陣列:
var myarray=new Array(" Welcome"); alert(myarray[0]); //輸出 Welcome
這其實沒什麼問題,那現在再來建立一個含有一個整數的數值陣列:
var myarray=new Array(10); alert(myarray[0]); //輸出 undefined
輸出不是10,而是undefined,問題在哪?
其實這是上面提到的第一種建立陣列方式,第一行程式碼是宣告了一個長度為10的陣列,
而不是一個含有單個數值元素10的陣列。
宣告陣列,卻沒有給定陣列元素初始值,所以理所當然會輸出undefined。
相同的語法,不同的資料型態,造就完全不同的結果,
這種邏輯錯誤,如果一時沒想好,就很容易犯錯。
同樣的例子,如果給定一個浮點數或負數當參數,那會直接造成程式錯誤,
理由是陣列長度只能是正整數。
多維陣列(Array):
陣列的維度,可以藉由在元素中再建立陣列來增加。
建立一個 3x3 的二維陣列:
var myarray=[]; myarray[0]=[1,2,3]; myarray[2]=[4,5,6]; myarray[3]=[7,8,9];
陣列(Array)物件的屬性:
屬性 | 說明 |
---|---|
constructor | 傳回建立陣列物件原型的函式 |
length | 設定或返回陣列中元素的長度。 |
陣列(Array)物件的方法:
方法 | 說明 |
---|---|
concat() | 合併陣列,並傳回一個新的陣列 |
indexOf() | 在陣列中搜尋指定元素,並返回第一個符合的索引 |
join() | 將陣列物件中所有元素合併成一個字串 |
lastIndexOf() | 從陣列尾端開始搜尋指定元素,並返回第一個符合的索引 |
pop() | 將陣列中最後一個元素移除,並傳回該元素 |
push() | 在陣列尾端加入一個元素,並傳回陣列長度 |
reverse() | 反轉陣列中的元素順序 |
shift() | 移除陣列的第一個元素, |
slice() | 選擇陣列的片斷,並傳回成為新的陣列。 |
sort() | 對陣列元素進行排序 |
splice() | 加入 和/或 移除陣列的元素 |
toString() | 將陣列轉為字串,並傳回該字串 |
unshift() | 在陣列前方加入新的元素,並傳回陣列長度。 |
valueOf() | 傳回陣列的初始值 |
filter | 過濾陣列元素 |
forEach() | 迭代整個陣列元素 |
every() | 測試所有陣列元素 |
some() | 檢查是否有任一陣列元素通過測試 |
map() | 迭代舊陣列元素產生新陣列 |
reduce() | 累計值處理 |
reduceRight() | 由右至左 累計值處理 |
按個讚!~支持本站!~
你可能會有興趣的文章
- String.valueOf()傳回字串物件的原始值
- String.toUpperCase()將字串字母變大寫
- String.toLowerCase()將字串字母變小寫
- 字串物件三種擷取子字串方法的差異
- String.substring()取得子字串
- String.substr()取得子字串