---
# System prepended metadata

title: 克服 JS 奇怪的部分 23. 陣列 - 任何東西的集合
tags: ["JavaScript\_", JavaScript 基礎]

---

### 什麼是陣列?

- 是一種用來存儲元素集合的**數據結構**。陣列是一個有序的、可迭代的、可修改的集合，每個元素都有一個唯一的索引（index），通常是以零為起始。


### 宣告陣列的方式

- 傳統的宣告方式。

```js
var arr = new Array();
console.log(arr)
// array
```

- 實體語法。

```js
var arr = [];
console.log(arr)
// []
```

- 以目前來說我們**更建議使用實體語法**。

### 基本的使用與序列(索引)

- 我們會以`,`來做一個索引排列：

- 然而，在陣列裡頭，要取得1，並非用數學的1來看待，而是從0開始的。
```js
const arr = [1, 2, 3];

console.log(arr[0]); 
// 取得 arr 陣列裡面的第一個索引值，也就是:1
```

### JavaScript 的 array 可以塞各種資料型別：

- 如下案例：

- 由下列案例來看，你可以看到這筆陣列有非常多的資料型態。


```js
const arr = [
  1, // number
  false, // boolean
  { // object
    name: `Tony`,
    address: `111 Main St.`,
  },
  function (name) { // object , 函數也屬於 object
    const greeting = "hello";
    console.log(greeting + name);
  },
  "hello", // string    
];

console.log(arr);
```
- 所以執行 arr 這個資料結構變數會報錯誤嗎?
  - no, 你可以看到以下的輸出結果：
```js
[1, false, {…}, ƒ, 'hello']
```

- 呼叫陣列內的函數，並且充分利用物件內的名稱來完成本範例：


```js
const arr = [
  1, // 0
  false, // 1
     // 2
  {
    name: `Tony`,
    address: `111 Main St.`,
  },
    // 3
  function (name) {
    const greeting = "hello, ";
    console.log(greeting + name);
  },
  "hello",
];

arr[3](arr[2].name);
// outputs:
hello, Tony
```



