ZGG内置类型-数组
ZGG语言提供了强大的数组功能。数组,可以定义为有限个值的有序集合
数组的声明与访问
数组声明方法:
每个item是一个表达式,数组保存的是表达式计算后得到的值。下标从0开始
访问数组指定下标的元素的语法为:
数组的运算
加法
若干个数组相加,将返回一个新的数组,其内容为各个参与相加的数组的依次拼接
乘法
数组支持乘以一个大于等于0的整数,其作用为将其重复若干遍。如:
注:乘以0的时候,即重复0遍,必然返回空数组
数组推导式
ZGG支持通过类似Python的数组推导式生成新的数组。
以下是一些常见的数组推导式用法:
数组的内置方法
为了提高工作效率,ZGG内置了大量实用的数组方法
往数组末尾添加元素
获取数组切片
原地排序
将数组各元素依次拼接为一个字符串
将数组元素转为一个Map
将数组元素按自定义key分组
将数组元素按顺序分组
查找数组中出现的第一个符合预期的元素,找不到则返回undefined
查找数组中出现的第一个符合预期的元素的下标,找不到则返回-1
//
生成数组的内建函数
返回从a到b的数组。如:seq(1, 5)返回[1, 2, 3, 4, 5]。更多用法请看下面的详解
具体用法见详解
具体用法见详解
具体用法见详解
函数详解
Array.map(mapper)
将数组每个元素根据mapper映射到指定形式,存放到新的数组中并返回。原数组内容不变
mapper支持多种不同类型:
任意可执行对象
mapper(item, index)
Int或Str
item[mapper]
Examples:
Array.filter(filterFunc)
将原数组将符合条件的元素,依次放在新数组并返回。
符合条件的定义是:filterFunc(item, index)返回一个真值。真值的定义请看条件判断章节
Examples:
Array.reduce(reducer, initialValue?)
reduce() 方法接收一个函数reducer作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
参数说明:
reducer: 格式为:func(total, currenetValue, currentIndex, thisArray)。如果不设reduce,默认会把各个元素相加返回(即为数组求和)
initialValue: 可选。传递给函数的初始total值
更多细节请看下面例子或参考Javascript里的表现。
Examples:
Array.each(callback)
依次取数组元素,调用callback函数。以下两段代码时等价的:
与
Array.toMap(keyMapper?, valueMapper?)
根据数组内的元素,生成一个Object对象,其键名为数组元素被keyMapper映射后的结果,键值为元素被valueMapper映射后的结果。
注:
mapper的映射规则,请参考数组的map方法
keyMapper和valueMapper都可以缺省,缺省时映射结果为元素本身
如果多个元素映射的键名相同,将保留最后一个元素映射的键值
Examples:
Array.toGroup(keyMapper?, valueMapper?)
根据key分组。根据数组内的元素,生成一个Object对象,其键名为数组元素被keyMapper映射后的结果,键值为“所有映射到该键名的元素被valueMapper映射后的结果”的数组。
注:
mapper的映射规则,请参考数组的map方法
keyMapper和valueMapper都可以缺省,缺省时映射结果为元素本身
同一分组元素顺序,为这些元素在原数组的顺序
Examples:
Array.chunk(chunkSize)
将数据元素按固定大小分段
Examples:
Array.find(predict)
找到第一个符合predict的元素并返回。当找不到符合元素时返回undefined
符合条件的定义是:
predict若为可执行对象:predict(item)返回真值
否则: item == predict
Examples:
Array.findIndex(predict)
与find相似,区别在于findIndex返回的是元素的下标,找不到的时候返回-1
Examples:
func seq(a, b)
生成从a到b的数组。这里的a和b的类型不仅局限于Int,还支持所有实现了__next__协议和__eq__协议的对象。
func range(end)
Example:
func range(begin, end)
Example:
func range(begin, end, step)
Example:
最后更新于