# 数组库 - Oraset 编程语言
Oraset 编程语言官方文档 - 简单、强大、跨平台的编程语言

跳转至

# 数组库

## 简介

数组库（`@array`）提供了一系列数组操作函数，包括数组长度获取、元素添加、删除、查找、排序等功能。

## 导入方式

    @array;

## 函数参考

### 基本数组操作

#### array.length(arr)

获取数组长度。

参数： - `arr` - 数组

返回值： - 数组的长度

示例：

    @array;

    fruits = arr(`apple`, `banana`, `cherry`);
    result = array.length(fruits);
    show(`Array length: `, result);  !! 输出: 3

#### array.push(arr, item)

向数组末尾添加一个元素。

参数： - `arr` - 数组 - `item` - 要添加的元素

返回值： - 添加元素后的新数组

示例：

    @array;

    fruits = arr(`apple`, `banana`);
    result = array.push(fruits, `cherry`);
    show(`After push: `, result);  !! 输出: ["apple", "banana", "cherry"]

#### array.pop(arr)

移除数组末尾的元素。

参数： - `arr` - 数组

返回值： - 移除元素后的新数组

示例：

    @array;

    fruits = arr(`apple`, `banana`, `cherry`);
    result = array.pop(fruits);
    show(`After pop: `, result);  !! 输出: ["apple", "banana"]

#### array.shift(arr)

移除数组开头的元素。

参数： - `arr` - 数组

返回值： - 移除元素后的新数组

示例：

    @array;

    fruits = arr(`apple`, `banana`, `cherry`);
    result = array.shift(fruits);
    show(`After shift: `, result);  !! 输出: ["banana", "cherry"]

#### array.unshift(arr, item)

向数组开头添加一个元素。

参数： - `arr` - 数组 - `item` - 要添加的元素

返回值： - 添加元素后的新数组

示例：

    @array;

    fruits = arr(`banana`, `cherry`);
    result = array.unshift(fruits, `apple`);
    show(`After unshift: `, result);  !! 输出: ["apple", "banana", "cherry"]

### 数组查找

#### array.indexOf(arr, item)

查找元素在数组中的位置。

参数： - `arr` - 数组 - `item` - 要查找的元素

返回值： - 元素的索引，未找到返回 -1

示例：

    @array;

    fruits = arr(`apple`, `banana`, `cherry`);
    result1 = array.indexOf(fruits, `banana`);
    result2 = array.indexOf(fruits, `orange`);
    show(`Index of 'banana': `, result1);  !! 输出: 1
    show(`Index of 'orange': `, result2);  !! 输出: -1

#### array.lastIndexOf(arr, item)

从数组末尾开始查找元素的位置。

参数： - `arr` - 数组 - `item` - 要查找的元素

返回值： - 元素的索引，未找到返回 -1

示例：

    @array;

    numbers = arr(1, 2, 3, 2, 1);
    result = array.lastIndexOf(numbers, 2);
    show(`Last index of 2: `, result);  !! 输出: 3

#### array.includes(arr, item)

检查数组是否包含指定元素。

参数： - `arr` - 数组 - `item` - 要检查的元素

返回值： - 布尔值，表示数组是否包含指定元素

示例：

    @array;

    fruits = arr(`apple`, `banana`, `cherry`);
    result1 = array.includes(fruits, `banana`);
    result2 = array.includes(fruits, `orange`);
    show(`Includes 'banana': `, result1);  !! 输出: true
    show(`Includes 'orange': `, result2);  !! 输出: false

### 数组转换

#### array.join(arr, sep)

将数组元素连接成一个字符串。

参数： - `arr` - 数组 - `sep` - 分隔符

返回值： - 连接后的字符串

示例：

    @array;

    fruits = arr(`apple`, `banana`, `cherry`);
    result = array.join(fruits, `, `);
    show(`Joined: `, result);  !! 输出: apple, banana, cherry

#### array.reverse(arr)

反转数组元素的顺序。

参数： - `arr` - 数组

返回值： - 反转后的新数组

示例：

    @array;

    fruits = arr(`apple`, `banana`, `cherry`);
    result = array.reverse(fruits);
    show(`Reversed: `, result);  !! 输出: ["cherry", "banana", "apple"]

#### array.sort(arr)

对数组元素进行排序。

参数： - `arr` - 数组

返回值： - 排序后的新数组

示例：

    @array;

    numbers = arr(3, 1, 4, 1, 5, 9, 2, 6);
    result = array.sort(numbers);
    show(`Sorted: `, result);  !! 输出: [1, 1, 2, 3, 4, 5, 6, 9]

    fruits = arr(`cherry`, `apple`, `banana`);
    result = array.sort(fruits);
    show(`Sorted fruits: `, result);  !! 输出: ["apple", "banana", "cherry"]

#### array.slice(arr, start, end)

提取数组的一部分。

参数： - `arr` - 数组 - `start` - 起始索引（从0开始） - `end` - 结束索引（不包含）

返回值： - 提取的子数组

示例：

    @array;

    numbers = arr(0, 1, 2, 3, 4, 5);
    result1 = array.slice(numbers, 2, 4);
    result2 = array.slice(numbers, 1);
    show(`Slice (2-4): `, result1);  !! 输出: [2, 3]
    show(`Slice (1+): `, result2);  !! 输出: [1, 2, 3, 4, 5]

## 示例代码

    @array;

    !! 创建数组
    fruits = arr(`apple`, `banana`, `cherry`);
    show(`Original array: `, fruits);

    !! 基本操作
    show(`Length: `, array.length(fruits));
    show(`After push: `, array.push(fruits, `orange`));
    show(`After pop: `, array.pop(fruits));
    show(`After unshift: `, array.unshift(fruits, `grape`));
    show(`After shift: `, array.shift(fruits));

    !! 查找操作
    show(`Index of 'banana': `, array.indexOf(fruits, `banana`));
    show(`Last index of 'banana': `, array.lastIndexOf(fruits, `banana`));
    show(`Includes 'cherry': `, array.includes(fruits, `cherry`));

    !! 转换操作
    show(`Joined: `, array.join(fruits, ` | `));
    show(`Reversed: `, array.reverse(fruits));

    !! 排序操作
    numbers = arr(5, 2, 8, 1, 9);
    show(`Original numbers: `, numbers);
    show(`Sorted numbers: `, array.sort(numbers));

    !! 切片操作
    show(`Slice (1-3): `, array.slice(numbers, 1, 3));

## 注意事项

- 所有数组操作函数都返回一个新的数组，不会修改原始数组
- 数组索引从0开始
- 数组元素可以是不同类型的值
- 对于大型数组，某些操作（如排序）可能会影响性能