- 一、 数组对象的基本构造方法
- 二、 数组的其他构造方法
- 三、 数组操作方法
List数组函数 - 四、 数组的算子操作
- 五、数组的
- list.add()
- list.addAll()
- list.contains()
- list.cutFormDs()
- list.deduplicate()
- list.equals()
- list.find()
- list.first()
- list.get()
- list.innerJoin()
- list.Join()
- list.last()
- list.parse()
- list.parseStr()
- list.remove()
- list.removeAll()
- list.removeByPrefix()
- list.removeValue()
- list.replaceElement()
- list.replacePrefix()
- list.size()
- list.subList()
- list.toDataSet()
- list.toJson()
- list.toString()
- list.toUnquatedJson()
- 五、练习: 写函数">
五、练习: 写函数
一、 数组对象的基本构造方法
数组用中括号括起来,里面逗号分隔。
数组中的元素可以是任意数据类型。
函数功能 | 函数 | 页面显示 |
---|---|---|
整数数组 | =[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对应的用户的名称,并且不是最后一个元素,在名称后面加上”,”。
得到字符串 “超管,林丽,张三”
案例:
短信管理平台 短信发送页面,输入以逗号隔开的手机号,发送短信前检查手机号是否符合规范,若不符合规范则提示:
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]”