前端(JavaScript)函数_数组操作
文档概述
轻语言网站开发中的数组相关操作函数、用于处理数组的创建、修改、查询和转换,包含获取数组长度、取数组元素、删除元素、添加元素、数组排序、数组去重、数组过滤等功能,常用于数据处理、列表管理、批量操作等场景。
- 元素访问:
取数组成员(数组, 索引)取元素,取数组成员数(数组)取长度,不能用数组[i]/数组.length(轻语言数组语法) - 增删操作:
添加成员(末尾) /添加成员首(开头) /删除成员(按索引) /删除成员首(队首) /删除成员尾(队尾) /清空数组 - 数据处理:
清除重复成员(去重) /过滤文本数组(筛选) /数组排序(排序) /翻转数组(反转) /重置数组(批量赋值) - 查询统计:
取成员下标(查位置) /取最大值/取最小值/取数组相等(比较) /合并数组
💡 数组与对象区别:数组用
[]定义、以索引存取(用取数组成员);对象用{}定义、以键值对存取(用对象.属性)。变量循环(i = 0, 取数组成员数(数组), 1)是遍历数组的标准写法,注意是左闭右开区间[0, 长度)。
函数:取数组成员(待操作数组,索引)
获取指定数组中,指定索引位置的成员值,数组索引从0开始。
' 获取数组中指定位置的成员
变量 水果 = ["苹果", "香蕉", "橙子"]
调试输出(取数组成员(水果, 0)) ' 苹果
调试输出(取数组成员(水果, 1)) ' 香蕉
调试输出(取数组成员(水果, 2)) ' 橙子
' 遍历数组所有成员
变量 数字 = [10, 20, 30, 40, 50]
变量 总和 = 0
变量循环(i = 0, 取数组成员数(数字), 1)
总和 = 总和 + 取数组成员(数字, i)
结束循环
调试输出("总和: " + 总和) ' 150
' 获取最后一个成员
变量 最后一个 = 取数组成员(水果, 取数组成员数(水果) - 1)
调试输出("最后一个: " + 最后一个) ' 橙子
函数:取数组成员数(待操作数组)
获取指定数组的成员数量。代码示例:变量 数量 = 取数组成员数(待操作数组)
' 获取用户列表的成员数量
变量 用户列表 = ["张三", "李四", "王五"]
变量 用户数 = 取数组成员数(用户列表)
调试输出("用户数量: " + 用户数) ' 3
' 检查数组是否为空
变量 空数组 = []
如果(取数组成员数(空数组) == 0)
调试输出("数组为空")
结束 如果
' 处理可能为空(轻语言空值关键字)的数组
变量 未定义数组
变量 成员数 = 取数组成员数(未定义数组)
调试输出("成员数: " + 成员数) ' 0
函数:置数组成员值(待操作数组,位置,值)
修改数组中指定位置的成员值;数组下标是从0开始的、例如:要将某个整数数组的第2个位置的值修改成10;示例代码:置数组成员值(数组1,1,10)
' 修改数组指定位置的值
变量 数组1 = [1, 2, 3, 4, 5]
置数组成员值(数组1, 1, 10)
调试输出(数组1[1]) ' 10
' 修改多个成员值
变量 分数 = [80, 85, 90, 95]
置数组成员值(分数, 0, 88)
置数组成员值(分数, 3, 92)
调试输出("修改后: " + JSON编码(分数)) ' [88,85,90,92]
' 交换两个成员的位置
变量 数据 = ["A", "B", "C"]
变量 临时 = 取数组成员(数据, 0)
置数组成员值(数据, 0, 取数组成员(数据, 2))
置数组成员值(数据, 2, 临时)
调试输出("交换后: " + JSON编码(数据)) ' ["C","B","A"]
函数:清除重复成员(待操作数组)
清除数组的重复成员;注意:逻辑型数组使用该函数需注意长度。
' 清除数组中的重复值
变量 数字 = [1, 2, 2, 3, 3, 3, 4, 5, 5]
清除重复成员(数字)
调试输出("去重后: " + JSON编码(数字)) ' [1,2,3,4,5]
' 清除字符串数组中的重复值
变量 姓名 = ["张三", "李四", "张三", "王五", "李四"]
清除重复成员(姓名)
调试输出("去重后: " + JSON编码(姓名)) ' ["张三","李四","王五"]
' 从用户访问记录中提取不重复用户
变量 访问记录 = ["user1", "user2", "user1", "user3", "user2"]
清除重复成员(访问记录)
调试输出("不重复用户数: " + 取数组成员数(访问记录)) ' 3
函数:过滤文本数组(待操作数组,关键字,是否返回包含)
根据指定关键字过滤一个文本数组;如果关键字为空,则不作匹配返回原始数组,如果参数三为真;则只返回数组中包含关键字的成员;为假则返回不包含关键字的成员(含空成员对象,因为空成员对象不包含关键字)。
' 过滤包含关键字的成员
变量 水果 = ["苹果", "香蕉", "红苹果", "橙子", "青苹果"]
变量 包含苹果 = 过滤文本数组(水果, "苹果", 真)
调试输出("包含苹果: " + JSON编码(包含苹果)) ' ["苹果","红苹果","青苹果"]
' 过滤不包含关键字的成员
变量 不含苹果 = 过滤文本数组(水果, "苹果", 假)
调试输出("不含苹果: " + JSON编码(不含苹果)) ' ["香蕉","橙子"]
' 搜索过滤用户列表
变量 用户列表 = ["张三", "李四", "张伟", "王五", "张强"]
变量 张姓用户 = 过滤文本数组(用户列表, "张", 真)
调试输出("张姓用户: " + JSON编码(张姓用户)) ' ["张三","张伟","张强"]
函数:取最大值(待操作数组)
获取一个整数型数组中的最大值,如果参数数组为空或数组长度为0会抛出异常:“数组不能为空且长度不能为0”。
' 获取数组中的最大值
变量 分数 = [85, 92, 78, 95, 88]
变量 最高分 = 取最大值(分数)
调试输出("最高分: " + 最高分) ' 95
' 获取温度数据中的最高温度
变量 温度 = [23, 25, 28, 31, 29, 27]
变量 最高温度 = 取最大值(温度)
调试输出("最高温度: " + 最高温度 + "°C") ' 31°C
' 获取价格中的最大值
变量 价格 = [9.9, 19.9, 29.9, 39.9]
调试输出("最高价: " + 取最大值(价格)) ' 39.9
函数:取最小值(待操作数组)
获取一个整数型数组中的最小值,如果参数数组为空或数组长度为0会抛出异常:“数组不能为空且长度不能为0”。
' 获取数组中的最小值
变量 分数 = [85, 92, 78, 95, 88]
变量 最低分 = 取最小值(分数)
调试输出("最低分: " + 最低分) ' 78
' 获取温度数据中的最低温度
变量 温度 = [23, 25, 28, 31, 29, 27]
变量 最低温度 = 取最小值(温度)
调试输出("最低温度: " + 最低温度 + "°C") ' 23°C
' 获取价格中的最小值
变量 价格 = [9.9, 19.9, 29.9, 39.9]
调试输出("最低价: " + 取最小值(价格)) ' 9.9
函数:合并数组(待操作数组1,待操作数组2)
合并两个数组并返回合并后的结果。代码示例:变量 新数组 = 合并数组(数组1, 数组2)
' 合并两个用户列表
变量 列表1 = ["张三", "李四"]
变量 列表2 = ["王五", "赵六"]
变量 合并列表 = 合并数组(列表1, 列表2)
调试输出("合并后: " + JSON编码(合并列表)) ' ["张三","李四","王五","赵六"]
' 合并数字数组
变量 数字1 = [1, 2, 3]
变量 数字2 = [4, 5, 6]
变量 合并数字 = 合并数组(数字1, 数字2)
调试输出("合并数字: " + JSON编码(合并数字)) ' [1,2,3,4,5,6]
' 处理空数组
变量 空数组 = []
变量 有效数组 = ["元素1", "元素2"]
变量 结果 = 合并数组(空数组, 有效数组)
调试输出("结果: " + JSON编码(结果)) ' ["元素1","元素2"]
函数:添加成员(待操作数组,值)
添加一个元素到数组末尾,并返回数组的新长度。代码示例:变量 新长度 = 添加成员(待操作数组, 值)
' 向购物车添加商品
变量 购物车 = ["苹果", "香蕉"]
变量 新长度 = 添加成员(购物车, "橙子")
调试输出("购物车: " + JSON编码(购物车)) ' ["苹果","香蕉","橙子"]
调试输出("商品数量: " + 新长度) ' 3
' 动态添加数据
变量 数据列表 = []
添加成员(数据列表, "数据1")
添加成员(数据列表, "数据2")
添加成员(数据列表, "数据3")
调试输出("数据列表: " + JSON编码(数据列表)) ' ["数据1","数据2","数据3"]
函数:清空数组(待操作数组)
清除数组中的所有元素,并返回数组的新长度。
' 清空购物车
变量 购物车 = ["苹果", "香蕉", "橙子"]
调试输出("清空前购物车: " + JSON编码(购物车))
变量 新长度 = 清空数组(购物车)
调试输出("清空后购物车: " + JSON编码(购物车)) ' []
调试输出("购物车长度: " + 新长度) ' 0
' 重置数据
变量 数据缓存 = [1, 2, 3, 4, 5]
清空数组(数据缓存)
调试输出("缓存已清空,长度: " + 取数组成员数(数据缓存)) ' 0
函数:清空成员(待操作数组)
设置指定数组中的所有成员对象为空,仍保留其长度。
' 清空数组成员值但保留长度
变量 数据 = [1, 2, 3, 4, 5]
清空成员(数据)
调试输出("长度: " + 取数组成员数(数据)) ' 5(长度不变)
' 注:清空后成员值变为 空(轻语言空值关键字,等价于原生 JS 的 null)
调试输出("内容: " + JSON编码(数据)) ' [null,null,null,null,null]
' 重置用户选择状态
变量 选中状态 = [真, 真, 假, 真]
清空成员(选中状态)
' 选中状态现在为 [null,null,null,null]
函数:数组排序(待操作数组,正序排列)
对数值型数组元素进行排序,仅支持数值型成员排序。参数:正序排列 为真则从小到大排序、为假则从大到小排序。代码示例:数组排序(待操作数组, 真)
' 数值数组从小到大排序(正序)
变量 数字数组1 = [3, 1, 4, 1, 5, 9, 2, 6]
数组排序(数字数组1, 真) ' 正序:从小到大
调试输出("正序排列: " + JSON编码(数字数组1)) ' [1,1,2,3,4,5,6,9]
' 数值数组从大到小排序(倒序)
变量 数字数组2 = [3, 1, 4, 1, 5, 9, 2, 6]
数组排序(数字数组2, 假) ' 倒序:从大到小
调试输出("倒序排列: " + JSON编码(数字数组2)) ' [9,6,5,4,3,2,1,1]
函数:取数组相等(数组1,数组2)
获取并判断两个数组是否完全相等。
' 比较两个数组是否相等
变量 数组1 = [1, 2, 3]
变量 数组2 = [1, 2, 3]
变量 数组3 = [1, 2, 4]
调试输出(取数组相等(数组1, 数组2)) ' 真
调试输出(取数组相等(数组1, 数组3)) ' 假
' 比较字符串数组
变量 列表1 = ["苹果", "香蕉"]
变量 列表2 = ["苹果", "香蕉"]
变量 列表3 = ["苹果", "橙子"]
调试输出(取数组相等(列表1, 列表2)) ' 真
调试输出(取数组相等(列表1, 列表3)) ' 假
' 比较不同长度的数组
变量 短数组 = [1, 2]
变量 长数组 = [1, 2, 3]
调试输出(取数组相等(短数组, 长数组)) ' 假
函数:翻转数组(待操作数组)
将数组元素翻转顺序。代码示例:翻转数组(待操作数组)
' 翻转数字序列
变量 数字数组 = [1, 2, 3, 4, 5]
翻转数组(数字数组)
调试输出("翻转后: " + JSON编码(数字数组)) ' [5,4,3,2,1]
' 实现回文检测
变量 原数组 = ["a", "b", "c"]
变量 备份数组 = 合并数组([], 原数组) ' 创建备份
翻转数组(备份数组)
如果(JSON编码(原数组) == JSON编码(备份数组))
调试输出("是回文数组")
否则
调试输出("不是回文数组")
结束 如果
' 倒序显示历史记录
变量 历史记录 = ["最新", "较新", "较旧", "最旧"]
翻转数组(历史记录)
调试输出("倒序历史: " + JSON编码(历史记录)) ' ["最旧","较旧","较新","最新"]
函数:重置数组(待操作数组,值)
将数组的所有成员均重新设置为指定的值。
' 将数组所有成员重置为同一值
变量 分数 = [85, 92, 78, 95]
重置数组(分数, 0)
调试输出("重置后: " + JSON编码(分数)) ' [0,0,0,0]
' 重置选中状态为未选中
变量 选中状态 = [真, 假, 真, 真]
重置数组(选中状态, 假)
调试输出("重置后: " + JSON编码(选中状态)) ' [false,false,false,false]
' 重置文本数组
变量 标签 = ["红", "绿", "蓝"]
重置数组(标签, "默认")
调试输出("重置后: " + JSON编码(标签)) ' ["默认","默认","默认"]
函数:取成员下标(待操作数组,值)
取出指定成员的下标值;如果成员不存在则返回 -1。
' 查找值在数组中的位置
变量 水果 = ["苹果", "香蕉", "橙子", "葡萄"]
变量 下标 = 取成员下标(水果, "橙子")
调试输出("橙子的下标: " + 下标) ' 2
' 查找不存在的值
变量 不存在 = 取成员下标(水果, "西瓜")
调试输出("西瓜的下标: " + 不存在) ' -1
' 查找用户在列表中的位置
变量 用户列表 = ["张三", "李四", "王五"]
变量 位置 = 取成员下标(用户列表, "李四")
如果(位置 != -1)
调试输出("找到用户,位置: " + 位置) ' 1
否则
调试输出("用户不存在")
结束 如果
函数:删除成员(待操作数组,索引)
删除指定索引处的元素,并返回数组的新长度。代码示例:变量 新长度 = 删除成员(待操作数组, 索引)
' 从购物车中删除指定商品
变量 购物车 = ["苹果", "香蕉", "橙子", "葡萄"]
变量 删除索引 = 1 ' 香蕉的位置
变量 新长度 = 删除成员(购物车, 删除索引)
调试输出("购物车: " + JSON编码(购物车)) ' ["苹果","橙子","葡萄"]
调试输出("剩余商品数: " + 新长度) ' 3
' 删除重复元素
变量 数组 = [1, 2, 2, 3, 2, 4]
' 从后往前删除,避免索引变化影响
变量循环(i = 取数组成员数(数组) - 1, 0, -1)
如果(数组[i] == 2)
删除成员(数组, i)
结束 如果
结束循环
调试输出("去重后: " + JSON编码(数组)) ' [1,3,4]
函数:添加成员首(待操作数组,值)
添加一个元素到数组开头,并返回数组的新长度。代码示例:变量 新长度 = 添加成员首(待操作数组, 值)
' 在任务队列开头添加紧急任务
变量 任务队列 = ["普通任务1", "普通任务2"]
变量 新长度 = 添加成员首(任务队列, "紧急任务")
调试输出("任务队列: " + JSON编码(任务队列)) ' ["紧急任务","普通任务1","普通任务2"]
调试输出("任务数: " + 新长度) ' 3
' 按优先级添加元素
变量 优先级列表 = ["中优先级", "低优先级"]
添加成员首(优先级列表, "高优先级")
调试输出("优先级列表: " + JSON编码(优先级列表)) ' ["高优先级","中优先级","低优先级"]
函数:删除成员首(待操作数组)
删除数组的第一个元素,并返回数组的新长度。代码示例:变量 新长度 = 删除成员首(待操作数组)
' 处理任务队列,完成第一个任务
变量 任务队列 = ["任务1", "任务2", "任务3"]
变量 剩余任务数 = 删除成员首(任务队列)
调试输出("已完成第一个任务")
调试输出("剩余任务: " + JSON编码(任务队列)) ' ["任务2","任务3"]
调试输出("剩余任务数: " + 剩余任务数) ' 2
' 实现队列的出队操作
变量 队列 = ["元素1", "元素2", "元素3"]
' 注:数组[索引] 为原生 JS 数组访问语法,轻语言支持直接使用;也可用 取数组成员(数组, 索引)
变量 首元素 = 队列[0]
删除成员首(队列)
调试输出("出队元素: " + 首元素) ' 元素1
函数:删除成员尾(待操作数组)
删除数组的最后一个元素,并返回数组的新长度。代码示例:变量 新长度 = 删除成员尾(待操作数组)
' 实现栈的出栈操作
变量 栈 = ["元素1", "元素2", "元素3"]
' 注:数组[索引] 为原生 JS 数组访问语法,轻语言支持直接使用;也可用 取数组成员(数组, 索引)
变量 栈顶元素 = 栈[取数组成员数(栈) - 1]
变量 新长度 = 删除成员尾(栈)
调试输出("出栈元素: " + 栈顶元素) ' 元素3
调试输出("栈剩余元素: " + JSON编码(栈)) ' ["元素1","元素2"]
调试输出("栈大小: " + 新长度) ' 2
' 撤销最近的操作
变量 操作历史 = ["打开文件", "编辑文本", "保存文件"]
删除成员尾(操作历史)
调试输出("撤销后历史: " + JSON编码(操作历史)) ' ["打开文件","编辑文本"]
函数:数组到文本(待操作数组,连接符)
将数组元素转换为字符串,并以指定分隔符分隔。代码示例:变量 文本 = 数组到文本(待操作数组, 连接符)
' 将标签数组转换为字符串
变量 标签 = ["重要", "紧急", "待办"]
变量 标签字符串 = 数组到文本(标签, ", ")
调试输出("标签: " + 标签字符串) ' 重要, 紧急, 待办
' 构造CSS类名
变量 类名数组 = ["btn", "btn-primary", "active"]
变量 类名字符串 = 数组到文本(类名数组, " ")
调试输出("类名: " + 类名字符串) ' btn btn-primary active
' 创建CSV行
变量 数据 = ["张三", "25", "工程师"]
变量 CSV行 = 数组到文本(数据, ",")
调试输出("CSV行: " + CSV行) ' 张三,25,工程师
学习要点
| 知识点 | 代码示例 | 说明 |
|---|---|---|
| 元素访问 | 取数组成员(数组, 0) | 取数组指定索引元素,索引从0开始;不能用 数组[i](轻语言数组语法) |
| 长度获取 | 取数组成员数(数组) | 获取数组元素数量;不能用 数组.length(轻语言数组语法) |
| 修改元素 | 置数组成员值(数组, 1, 10) | 修改指定索引位置的值;与 取数组成员 配套成对使用 |
| 循环遍历 | 变量循环(i = 0, 取数组成员数(数组), 1) | 左闭右开区间 [0, 长度),自动遍历所有元素 |
| 去重 | 清除重复成员(数组) | 原地去重,修改原数组;逻辑型数组注意长度变化 |
| 过滤 | 过滤文本数组(数组, "关键字", 真) | 第三参数 真=返回包含项、假=返回不包含项;空关键字返回原数组 |
| 排序 | 数组排序(数组, 真) | 真=正序(升序)、假=倒序(降序);仅支持数值型数组 |
| 查找位置 | 取成员下标(数组, "橙子") | 返回元素索引,未找到返回 -1;常配合 删除成员 使用 |
| 数组序列化 | JSON编码(数组) | 将数组转为 JSON 字符串,用于调试输出、存储、传输 |
| 数组比较 | 取数组相等(数组1, 数组2) | 深度比较两数组所有元素是否完全相等 |
| 空值处理 | 清空成员(数组) | 清空值但保留长度,元素变为 空(等价于 null);清空数组 则长度归零 |
相关文档
- 文档
前端(JavaScript)函数_对象操作——取对象成员数、取对象成员名对象遍历函数 - 文档
前端(JavaScript)函数_数据转换类——JSON编码、JSON解析、到整数等函数 - 文档
前端(JavaScript)函数_字符串操作——数组到文本的逆操作文本到数组等 - 文档
前端(JavaScript)函数_数学运算——取最大值、取最小值的数学版本(参数为多值而非数组) - 文档
轻语言网站:变量与数组与对象的定义—— 数组与对象的基本语法