# Array 数组操作

## 功能

Array 原型函数提供增删改查、排序、切片、扁平化、深拷贝和高阶遍历能力。

## API 列表

| API | 说明 |
| ------ | ------ |
| [Array.len](/docs/array/len) | 返回数组元素数量。 |
| [Array.to_string](/docs/array/to_string) | 把数组序列化为 JSON 字符串。 |
| [Array.join](/docs/array/join) | 把数组元素按分隔符拼接成字符串。 |
| [Array.each](/docs/array/each) | 遍历数组并执行回调。 |
| [Array.pop](/docs/array/pop) | 删除并返回数组最后一个元素。 |
| [Array.at](/docs/array/at) | 按下标读取元素，支持负数从尾部读取。 |
| [Array.push](/docs/array/push) | 把一个或多个元素追加到数组尾部。 |
| [Array.shift](/docs/array/shift) | 删除并返回数组第一个元素。 |
| [Array.unshift](/docs/array/unshift) | 把一个或多个元素插入数组开头。 |
| [Array.insert](/docs/array/insert) | 在指定下标插入一个或多个元素。 |
| [Array.sort](/docs/array/sort) | 对数组排序。未传回调时按元素字符串值排序；传入回调时按回调返回数字决定顺序。 |
| [Array.reverse](/docs/array/reverse) | 反转数组元素顺序。 |
| [Array.slice](/docs/array/slice) | 按起止下标复制数组片段。 |
| [Array.splice](/docs/array/splice) | 从数组中删除指定范围，并可插入新元素。 |
| [Array.concat](/docs/array/concat) | 合并当前数组和后续参数。数组参数会展开一层，非数组参数按元素追加。 |
| [Array.contains](/docs/array/contains) | 判断数组是否包含指定值。 |
| [Array.index_of](/docs/array/index_of) | 返回指定值第一次出现的下标。 |
| [Array.last_index_of](/docs/array/last_index_of) | 返回指定值最后一次出现的下标。 |
| [Array.find](/docs/array/find) | 返回第一个让回调结果为真的元素。 |
| [Array.find_index](/docs/array/find_index) | 返回第一个让回调结果为真的元素下标。 |
| [Array.find_last](/docs/array/find_last) | 从右向左返回第一个让回调结果为真的元素。 |
| [Array.find_last_index](/docs/array/find_last_index) | 从右向左返回第一个让回调结果为真的元素下标。 |
| [Array.every](/docs/array/every) | 判断数组中所有元素是否都让回调结果为真。 |
| [Array.some](/docs/array/some) | 判断数组中是否存在元素让回调结果为真。 |
| [Array.filter](/docs/array/filter) | 筛选让回调结果为真的元素。 |
| [Array.map](/docs/array/map) | 遍历数组并把回调返回值组成新数组。 |
| [Array.reduce](/docs/array/reduce) | 从左到右累计数组元素。 |
| [Array.reduce_right](/docs/array/reduce_right) | 从右到左累计数组元素。 |
| [Array.fill](/docs/array/fill) | 用指定值填充数组的一段范围。 |
| [Array.flat](/docs/array/flat) | 按深度展开嵌套数组。 |
| [Array.flat_map](/docs/array/flat_map) | 先 map 后按深度 1 展开映射结果。 |
| [Array.keys](/docs/array/keys) | 返回数组下标数组。 |
| [Array.values](/docs/array/values) | 返回数组浅拷贝。 |
| [Array.entries](/docs/array/entries) | 返回 [index, value] 形式的条目数组。 |
| [Array.clone](/docs/array/clone) | 返回数组深拷贝。 |
| [Array.delete](/docs/array/delete) | 删除指定下标的元素。 |
| [Array.remove_at](/docs/array/remove_at) | 删除并返回指定下标的元素，支持负数下标。 |
| [Array.clear](/docs/array/clear) | 清空数组并返回原数组。 |

## 示例

```bt
items = [1, 2, 3]
result = items.map(fn(value) { value * 2 })

// 输出：[2,4,6]
print result
```

## 注意事项

- push、pop、shift、unshift、insert、sort、reverse、splice、fill、delete、remove_at、clear 会修改原数组。
- slice、concat、map、filter、flat、flat_map、clone、values、entries 返回新数组。
