---
章节：6
页码：47
描述：数组是数据的列表，是编程中的基础部分。我们可以在数组中存储多种类型的数据。
---

# 第6章
# 数组（Arrays）

数组是编程中的基础部分。数组是一种数据列表。我们可以在一个变量中存储大量数据，这使我们的代码更易读、更易理解，也更方便对相关数据进行操作。

数组中的数据称为 `元素`。

下面是一个简单的数组示例：

```javascript
// 1, 1, 2, 3, 5 和 8 是数组中的元素
let numbers = [1, 1, 2, 3, 5, 8];
```

数组可以使用数组字面量或 `new` 关键字轻松创建：

```javascript
const cars = ["Saab", "Volvo", "BMW"]; // 使用数组字面量
const cars = new Array("Saab", "Volvo", "BMW"); // 使用 new 关键字
```

可以通过索引访问数组的值。数组的第一个元素索引总是 `0`，因为数组索引从 `0` 开始。
索引也可以用于修改数组元素：

```javascript
const cars = ["Saab", "Volvo", "BMW"];
console.log(cars[0]); 
// 结果: Saab

cars[0] = "Opel"; // 修改数组的第一个元素
console.log(cars);
// 结果: ['Opel', 'Volvo', 'BMW']
```

{% hint style="working" %}
数组是一种特殊的对象类型。数组中也可以包含 对象
。
{% endhint %}

数组的 `length` 属性返回元素的数量。数组支持的方法如下表所示：

| 方法名称              | 描述                                                                             |
| ----------------- | ------------------------------------------------------------------------------ |
| `at()`            | 返回指定索引的元素或 `undefined`                                                         |

| `concat()`        | 返回两个或多个数组的组合                                                                   |

| `every()`         | 如果回调函数对数组中每个元素都返回 `true`，则返回 `true`                                            |

| `filter()`        | 返回一个新数组，包含回调函数返回 `true` 的元素                                                    |

| `find()`          | 返回第一个使回调函数返回 `true` 的元素                                                        |

| `findIndex()`     | 返回第一个使回调函数返回 `true` 的元素索引                                                      |

| `findLast()`      | 返回最后一个使回调函数返回 `true` 的元素                                                       |

| `findLastIndex()` | 返回最后一个使回调函数返回 `true` 的元素索引                                                     |

| `flat()`          | 返回一个新数组，将所有子数组元素递归展开到指定深度                                                      |

| `flatMap()`       | 先运行 `map()`，再运行深度为 1 的 `flat()`                                                |

| `forEach()`       | 对数组中的每个元素执行回调函数，返回 `undefined`                                                 |

| `indexOf()`       | 返回搜索元素第一次出现的索引                                                                 |

| `join()`          | 将数组中的所有元素连接成一个字符串                                                              |

| `lastIndexOf()`   | 返回搜索元素最后一次出现的索引                                                                |

| `map()`           | 执行回调函数后返回一个新数组                                                                 |

| `pop()`           | 删除数组的最后一个元素并返回该元素                                                              |

| `push()`          | 在数组末尾添加一个或多个元素，并返回数组的新长度                                                       |

| `reduce()`        | 使用 `callback(accumulator, currentValue, currentIndex, array)` 对数组进行归约操作，返回最终结果 |

| `reduceRight()`   | 与 `reduce()` 类似，但从数组末尾开始                                                       |

| `reverse()`       | 原地翻转数组元素，并返回数组的引用                                                              |

| `shift()`         | 删除数组的第一个元素并返回该元素                                                               |

| `slice()`         | 提取数组的一部分并返回新数组                                                                 |

| `some()`          | 如果回调函数对数组中至少一个元素返回 `true`，则返回 `true`                                           |

| `sort()`          | 原地对数组元素进行排序，并返回数组的引用                                                           |

| `splice()`        | 从数组中删除元素（可选择性替换），并返回删除的元素                                                      |

| `unshift()`       | 在数组开头添加一个或多个元素，并返回数组的新长度                                                       |
