# 陣列(Array)及物件(Object)
[參考](https://www.fooish.com/javascript/array/)
[參考2](https://miahsuwork.medium.com/%E7%AC%AC%E5%9B%9B%E9%80%B1-javascript-%E9%99%A3%E5%88%97-array-%E8%88%87-%E7%89%A9%E4%BB%B6-object-25f13e3d3c92)
### 陣列
陣列可適用於重複性高的事務,例如老師希望你輸入全班成績,只用變數的話會變成:
```
var number1 = 90;
var number2 = 33;
var number3 = 82;
```
不如包成一個陣列:
```
var scores = [90, 33, 82, ...]
```
陣列的形式是:
```
陣列名稱 = [ 第 0 個內容, 第 1 個內容, 第 2 個內容, ...]
JavaScript 中,所有索引值(位置)都是 0 開始。
```
以下是基礎的陣列用法:
```
var 陣列名稱 = [ 第 0 個內容, 第 1 個內容, 第 2 個內容, ...]
陣列名稱[索引值] = 內容 //增加或改變陣列內容
陣列名稱.push(內容) //將內容增新到陣列尾端
陣列名稱.length //得到陣列長度(有幾個元素)
```
>在寫程式時遇到重複的動作,一定有方法能夠優化。
```
通常用來存放性質相近的資料
想像成一個列表物件,裡面含有幾個數值
// 陣列基本操作
box[1, 2, 3]
// box 代表陣列名稱
// [] 內的值代表索引值(index),陣列中索引是從 0 開始
console.log(box.length) // 印出 3,代表陣列長度
console.log(box[1]) // 索引為 1 時,印出 2
// 範例練習
var score = [20, 5, 100]
console.log(score, score.length) // 印出 [20, 5, 100] 3
console.log(score[score.length - 1]) // 印出 100,陣列長度減一代表最後一個數的索引
score.push(60) // 在陣列最後新增一個數
score[score.length] = 80 // 在陣列最後新增一個數
console.log(score.length) // 印出 5
```
### 物件
如果只是登記同學成績,陣列好像就夠了。但老師看你好像很熟悉 JaveScript ,進一步拜託你登記每位同學的名字、電話和成績。如果每種類別都用一個陣列好像太冗了,此時就可以使用物件:
```
var 物件名稱 = {
key0 : value0;
key1 : value1;
...
}
```
以上 value 的部分可以放值、字串、陣列、物件或甚至一個函式。當然物件也能和陣列一同使用,例如以下每位學生就是一個物件:
```
var students = [ peter, mary, ...]
var peter = {
name: 'Peter'
phone: '0922'
score: 100
}
```
叫出 value 的方法有兩種: 物件名稱['key'] 和 物件名稱.key 。
```
var peter = {
name: 'Peter'
phone: '0922'
score: 100
}
console.log(peter[name])
> Peter
peter[score] = 88
console.log(peter)
// {
// name: 'Peter'
// phone: '0922'
// score: 88
// }
```