数组
数组是有序的元素序列, 元素可以是任意的类型, 如整型、字符串或者自定义类型.
数组元素可以通过索引(下标)来读和写, 索引从 0
开始, 第二个索引为 1, 以此类推.
声明
声明一个数组的语句如下:
arr = [1, "Two", "三"]
访问数组元素
数组元素可以通过索引(位置)来读取. 格式为数组名后加中括号, 中括号中为索引的值. 例如:
print('第三个元素为:', arr[2]);
如果索引超出长度, 会抛出异常, 可参考下方可选链
如果索引x为负数, 会取倒数第abs(x)个元素
切片
可以通过以下方式获得数组的部分元素
arr = [1, "Two", "三", "IIII", 5.0001];
print(arr[1:3]); // 获得第1到第3个之间元素(前闭后开,获得索引1、2)
print(arr[:2]); // 获取前两个元素(获得索引0、1)
print(arr[3:]); // 获取第3个之后的元素(含索引3)
print(arr[-2:]); // 获取最后两个元素
print(arr[:-3]); // 获取倒数第3个之前的元素
索引超出范围时, 不会抛出异常, 而是返回空数组
遍历
for (ind, ele in arr) {
print(`索引 = ${ind}, 元素 = ${ele}`)
}
长度和容量
- 通过len方法获得数组的长度
- 通过cap方法获得数组的容量
示例
arr = [1, 2, 3];
// 长度
print(len(arr));
print(arr.len);
// 容量
print(cap(arr));
print(arr.cap);
容量并不是代表数组的最大长度, 而是在容量范围内增加长度不会重新申请内存, 对于新手而言可以不用关注
数组原型方法
方法名 | 描述 |
---|---|
forEach | 遍历元素 |
map | 遍历元素并将返回值重组成一个数组 |
filter | 遍历元素并将返回零的内容去掉后重组 |
filterMap | 遍历元素并将返回非false的元素重组 |
asyncMap | 异步多线程执行任务 |
find | 寻找第一个满足条件的元素 |
findIndex | 寻找第一个满足条件的元素所在的索引 |
indexOf | 寻找第一个相等元素所在的索引 |
fill | 将数组的全部元素设置为某个值 |
len | 数组长度 |
length | 数组长度 |
every | 判断数组内元素是否全部满足条件 |
some | 是否包含某个满足条件的元素 |
join | 使用字符串将数组拼接成一个String |
toMap | 将数组内的元素组合成map |
toBucket | 根据某种规则将数组内的元素进行分组 |
sort | 根据排序规则将数组重新排列 |
reduce | 逐个执行方法并将结果传递下去 |
reverse | 将数组元素倒序 |
concat | 拼接另一个数组并返回 |
slice | 获得数组切片 |
replace(from,to/func,count) | 替换元素 |
shuffle | 洗牌,将数组元素打乱 |
bytearray数组方法
方法名 | 描述 |
---|---|
hex | 仅bytearray可调用,转成十六进制 |
split | 仅bytearray可调用,将其分割成多个bytearray |
gzip | 仅bytearray可调用,将内容进行gzip压缩 |
ungzip | 仅bytearray可调用,将内容进行gzip解压 |
replace | 作为bytearray调用时,和string的replace类似,将内容进行替换 |
数组指针
绝大多数数组方法不支持修改数组的长度, 如果需要修改, 建议使用数组指针
数组指针具备数组
的绝大多数函数和特性
声明
arr = &[]
作为数组使用
arr = &[1, 2, 3, 4]; // Tips: 下一行是以([{开头时, 需要显式以分号结尾本行
(*arr).map(e=>e*e)
数组指针方法
方法名 | 描述 |
---|---|
pop | 删除数组末尾的元素 |
push | 添加元素到数组的末尾 |
shift | 删除数组最前面的元素 |
unshift | 添加元素到数组的头部 |
splice | 通过索引添加或删除多个元素 |
remove | 移除多个元素 |
可选链
如果尝试对数组进行取值时, 索引超出了边界, 会抛出slice index out of range
的错误, 此时有两种方式可以试探性取值
数组
?.index
// 如果索引超出边界,返回nil数组
?[index]
// 如果索引超出边界,返回nil
可选链的更多说明可以参考文档运算符