一、 数组对象的基本构造方法

数组用中括号括起来,里面逗号分隔。
数组中的元素可以是任意数据类型。

函数功能 函数 页面显示
整数数组 =[1,3,5] [1,3,5]
字符串数组 =[“张三”,”李四”,me.姓名] [“张三”,”李四”,”admin”]
混合数组 =[1,Date.today(),me.部门 [1,2021-3-18,业务部]
数组的数组 =[[1,3,5],[2,4,6],[10,11]] [[1,3,5],[2,4,6],[10,11]]

二、 数组的其他构造方法

List.parse(文本)

字符串转换为数组。字符串转换为数组的时候,字符串的内容必须是数值,字符串,是非值,日期等常量。
例如 A1= “[1,3,5]”,那么可以通过 List.parse(A1)来将A1转换为数组。

to(起始值,终止值,间隔)

顺序生成等间隔的整数数组

=to(1,5) 按照间隔1,生成数组 [1,2,3,4,5]
=to(100,200,30) 按照间隔30,生成数组 [100,130,160,190]

=to(3,-3) 生成数组[3,2,1,0,-1,-2,-3]
=to(10,0,-3) 按照间隔-3, 生成数组[10,7,4,1]

to(起始值,终止值,间隔)

顺序生成等间隔的整数数组

=to(1,5) 按照间隔1,生成数组 [1,2,3,4,5]
=to(100,200,30) 按照间隔30,生成数组 [100,130,160,190]

=to(3,-3) 生成数组[3,2,1,0,-1,-2,-3]
=to(10,0,-3) 按照间隔-3, 生成数组[10,7,4,1]

Date.to(起始日期,终止值,步长,步长单位)

顺序生成等间隔的日期数组

=Date.to(Date.today(),Date.today().addDay(3))
按照间隔1天,生成数组 [2021-07-04,2021-07-05,2021-07-06]

=Date.to(Date.today(),Date.today().addDay(25),10)
按照间隔10天,生成数组 [2021-07-04,2021-07-14,2021-07-24]

=Date.to(Date.today(),Date.today().addYear(1),3,5)
按照间隔3月,生成数组 [2021-07-04,2021-10-04,2022-01-04,2022-04-04,2022-07-04]

=Date.to(Date.today(),Date.today().addYear(-1),-3,5)
按照间隔减少3月,生成数组 [2021-07-04,2021-04-04,2021-01-04,2020-10-04,2020-07-04]

时间步长单位:
int ERA = 0;
int YEAR = 1;
int MONTH = 2;
int WEEK_OF_YEAR = 3;
int WEEK_OF_MONTH = 4;
int DATE = 5;
int DAY_OF_MONTH = 5;
int DAY_OF_YEAR = 6;
int DAY_OF_WEEK = 7;
int DAY_OF_WEEK_IN_MONTH = 8;
int AM_PM = 9;
int HOUR = 10;
int HOUR_OF_DAY = 11;
int MINUTE = 12;
int SECOND = 13;
int MILLISECOND = 14;

三、 数组操作方法
List数组函数

函数功能 函数 页面显示 返回类型
从json中解析出字符串 =List.parse([1,2,3] [1,2,3] 数组
创建一个数组 =List.creat(admin,normal) [admin,normal] 数组
从普通字符串中解析出数组 =List.parseStr(“admin”,”normal”) [“admin”,”normal”] 数组
根据源格,组织成数组A(“1”,”2”) =List.creatByCell(Cl.A2) [1,2] 数组
将数据集表达式的值转化为数组 =List.cutDs(ds,ds.名称) [“admin”,”normal”] 数组

四、 数组的算子操作

有些复杂的业务场景,我们希望能对数组的每个元素进行某项操作,但该项操作是什么,需要开发者自己来决定。这时候我们把该操作定义为算子表达式,对数组进行遍历。

数组的算子表达式中,可以使用两个特殊的变量,o1和o2。

  • o1是 数组中的元素,
  • o2是数组中当前元素对应的序号。

例如数组类型变量 ids是[1,2,3], 是用户id组成的数组,现在我们需要转换为名称数组,过滤出男性用户列表,按照用户的名称,拼成字符串。

list.each(转换表达式)

对数组的每个元素,做转换运算,得到一个新的数组。

现在希望得到数组变量 names ,是这些用户对应的名称组成的列表。
=ids.each(table.用户.findOne(table.用户.id==o1).名称)

返回数组 [超管,林丽,张三]

list.eachFilter(过滤表达式)

对数组的每个元素,做转换运算,得到一个新的数组

=ids.eachFilter(table.用户.findOne(table.用户.id==o1,[table.用户.性别]).性别==Dict.性别.男)

得到数组[1,3] 因为 用户2 是女性。

list.eachJoin(字串表达式)

对数组的每个元素,做转换运算,得到一个新的数组

=ids.eachJoin(table.用户.findOne(table.用户.id==o1).名称 + ifv(o2==A1.size()-1,””,”,”))
根据元素去查找该id对应的用户的名称,并且不是最后一个元素,在名称后面加上”,”。

得到字符串 “超管,林丽,张三”

案例:
短信管理平台 短信发送页面,输入以逗号隔开的手机号,发送短信前检查手机号是否符合规范,若不符合规范则提示:
image.png
image.png
A25: =Str.split(dynamic(A6)+””, “,”).each(Str.trim(o1))
把A6格内容中,用逗号隔开的内容转换成数组,再取元素组成数组 返回值:数组

B25:=Str.split(dynamic(A6)+””, “,”).each(Str.trim(o1)).eachFilter(Str.len(o1)==11)
把A6格内容中,用逗号隔开的内容转换成数组,再取元素组成数组,找出长度等于11位的元素 返回值:数组

C25: =dynamic(A25).size() == dynamic(B25).size()
比较规范的数组长度和不符合规范的数组长度是否相等,不相等说明输入的手机号不符合规范

D25: =Str.split(dynamic(A6)+””, “,”).each(Str.trim(o1)).eachFilter(Str.len(o1)!=11)
把A6格内容中,用逗号隔开的内容转换成数组,再取元素组成数组,找出长度不等于11位的元素

五、数组的

list.add()

给数组添加一个新的元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.add(“张三”)
运算后结果为:[“admin”,”normal”,”张三”]

list.addAll()

添加参数数组中的所有元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.addAll([“张三”,”李四”])
运算后结果为:[“admin”,”normal”,”张三”,”李四”]。

list.contains()

判断数组中是否存在和指定值相等的数组元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.contains(“normal”)
运算后结果为:true。

list.cutFormDs()

将数据集的某个字段的值转变为数组

数据集类型变量ds,泛型为用户。单元格表达式为List.cutFromDs(ds,Tname.用户.名称)
运算后结果为:[“admin”,”normal”]

list.deduplicate()

给数组去掉重复元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”,,”normal”)。单元格使用函数:list.duplication()
运算后结果为:[“admin”,”normal”]

list.equals()

判断数组是否和指定的数组相同:每一个索引位置的元素都相等

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。数组类型变量list2,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.equals(list2)
运算后结果为:true。

list.find()

查找数组中指定元素值的位置

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.find(“normal”)
运算后结果为:1。

list.first()

获取数组的第一个元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.first()
运算后结果为:”admin”。

list.get()

获取数组中指定索引位置的元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.get(1)
运算后结果为:”normal”。

list.innerJoin()

获取数组与另一个数组的交集

List.parse(“[1,2,3]”).innerJoin(List.parse(“[2,3,4]”)),
返回”[2,3]”

list.Join()

将数组连接起来

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.join(“,”)
运算后结果为:”admin,normal”。

list.last()

获得数组的最后一个元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.last(),运算后结果为:”normal”。

list.parse()

从json格式字符串解析出数组,或者根据数组对象拷贝出一个数组

List.parse([1,2,3]),返回数组[1,2,3]
List.parse(“admin”,”normal”),返回数组[“admin”,”normal”]

list.parseStr()

从普通字符串解析出数组,例如[张三,李四]

List.parseStr(admin,normal),返回数组[“admin”,”normal”]

list.remove()

删除数组中指定索引的元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.remove(0)
运算后结果为:[“normal”]。

list.removeAll()

删除数组中,包含在参数数组中的所有元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。数组类型变量list2,初始化函数为:List.create(“normal”,”张三”)。单元格使用函数:list.removeAll(list2)
运算后结果为:[“admin”]。

list.removeByPrefix()

删除数组中,包含在参数数组中的所有元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。数组类型变量list2,初始化函数为:List.create(“normal”,”张三”)。单元格使用函数:list.removeAll(list2)
运算后结果为:[“admin”]。

list.removeValue()

删除数组中所有等于参数的元素

数组类型变量list,初始化函数为:List.create(“admin”,”normal”,”normal”)。单元格使用函数:list.removeValue(“normal”)
运算后结果为:[“admin”]。

list.replaceElement()

替换数组中的元素,深层数组内元素也替换

数组类型变量list,初始化函数为:List.create(“admin”,List.create(“admin”,”normal”),”normal”)。单元格使用函数:list.replaceElement(“normal”,”张三”)
运算后结果为:[“admin”,[“admin”,”张三”],”张三”]。

list.replacePrefix()

替换字符串类型数组中,所有元素的起始字符串为指定值

数组类型变量list,初始化函数为:List.create(“admin”,”normal”,”adminxx”)。单元格使用函数:list.replacePrefix(“ad”,”bb”),运算后结果为:。[“bbmin”,”normal”,”bbminxx”]

list.size()

获取数组的元素个数

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.size(),运算后结果为:2。

list.subList()

获取数组的一截,即子数组

数组类型变量list,初始化函数为:List.create(“admin”,”normal”,”张三”)。单元格使用函数:list.subList(1)
运算后结果为:[“normal”,”张三”]。

list.toDataSet()

获取数组的一截,即子数组

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.toDataSet()
运算后结果为:数据集类型变量集,泛型为IdValue,数组元素的(索引+1)对应为id值,数组元素的值对应为value值

list.toJson()

将数组转换成数据集

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.toDataSet()
运算后结果为:数据集类型变量集,泛型为IdValue,数组元素的(索引+1)对应为id值,数组元素的值对应为value值

list.toString()

返回将数组格式化为JSON格式后的字符串,同toString()

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.toJson(),运算后结果为:”[“admin”,”normal”]”。

list.toUnquatedJson()

将数组转换成json格式字符串,其中字符串不添加双引号

数组类型变量list,初始化函数为:List.create(“admin”,”normal”)。单元格使用函数:list.toUnquatedJson()
运算后结果为:”[admin,normal]”

image.png五、练习: 写函数