# JS 學習筆記(3) - 陣列(Array) - [重新認識 JavaScript: Day 04 物件、陣列以及型別判斷](https://ithelp.ithome.com.tw/articles/10190962) - [The JavaScript languageObjects: the basics - Array](https://zh.javascript.info/array) 物件允許存儲鍵值集合,但是我們有時候會需要有序集合,將元素按順序排列,這時候使用物件就不是很方便,因為物件不能提供管理元素順序的方法,因此就可以使用 Array,它能儲存有序的集合。 ## 陣列聲明 聲明陣列 ```javascript= // 方括號 (常見) let arr = [item1, item2...]; // new Array (少見) let arr = new Array(item1, item2...); ``` 添加初始元素 ```javascript= let fruits = ["Apple", "Orange", "Plum"]; ``` 陣列從 0 開始編號(索引 , Index) ```javascript= let fruits = ["Apple", "Orange", "Plum"]; alert( fruits[0] ); // Apple alert( fruits[1] ); // Orange alert( fruits[2] ); // Plum alert( fruits.length ); // 陣列長度為 3 alert( fruits ); // Apple,Orange,Plum ``` 添加與替換元素 ``` fruits[2] = 'Pear'; // ["Apple", "Orange", "Pear"] fruits[3] = 'Lemon'; // ["Apple", "Orange", "Pear", "Lemon"] ``` 陣列可以儲存任何型別的元素 ```javascript= // 混合值 let arr = [ 'Apple', { name: 'John' }, true, function() { alert('hello'); } ]; // 獲取索引為 1 的物件然後顯示它的 name alert( arr[1].name ); // John // 獲取索引為 3 的函數並執行 arr[3](); // hello ``` 清空陣列的方法 ```javascript= let arr = [1, 2, 3, 4, 5]; arr.length = 0; ``` ## push & pop 方法 push 方法,將元素加入到陣列末尾: ```javascript= let fruits = ["Apple", "Orange"]; fruits.push("Pear"); alert( fruits ); // Apple, Orange, Pear ``` pop 方法,從陣列末尾將元素取出: ```javascript= let fruits = ["Apple", "Orange", "Pear"]; alert( fruits.pop() ); // 取出 "Pear" alert( fruits ); // Apple, Orange ``` ## shift & unshift 方法 unshift 方法,將元素加入到陣列頭部: ```javascript= let fruits = ["Orange", "Pear"]; fruits.unshift('Apple'); alert( fruits ); // Apple, Orange, Pear ``` shift 方法,從陣列頭部將元素取出: ```javascript= let fruits = ["Apple", "Orange", "Pear"]; alert( fruits.shift() ); // 移除 Apple alert( fruits ); // Orange, Pear ``` 一次添加多個元素 ```javascript= let fruits = ["Apple"]; fruits.push("Orange", "Peach"); fruits.unshift("Pineapple", "Lemon"); // ["Pineapple", "Lemon", "Apple", "Orange", "Peach"] alert( fruits ); ``` ## 陣列的遍歷 使用 for 循環 ```javascript= let arr = ["Apple", "Orange", "Pear"]; for (let i = 0; i < arr.length; i++) { alert( arr[i] ); } ``` 使用 `for..of` 此方式不能獲取陣列的索引值,只能獲取陣列的值 ```javascript= let fruits = ["Apple", "Orange", "Plum"]; for (let fruit of fruits) { alert( fruit ); } ``` 不要使用 `for..in` ## 多維陣列 ```javascript= let matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; alert( matrix[1][1] ); // 5 ``` 其他陣列方法:https://zh.javascript.info/array-methods