陣列物件 Array

陣列是一種資料的集合,在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() 由右至左 累計值處理

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章