# 集合以及数组

Collection,Iterator,Enumeration,Object[] 添加的扩展方法

# map

  • 入参:function:Function 接收一个Lambda表达式
  • 返回值:Object
  • 函数说明:将集合进行循环转换
var list = [1,2,3,4,5];
return list.map(e=>e+1);    //返回[2,3,4,5,6]
1
2

# filter

  • 入参:function:Function 接收一个Lambda表达式
  • 返回值:Object
  • 函数说明:将集合进行过滤
var list = [1,2,3,4,5];
return list.filter(e=>e>3);    //返回[4,5]
return list.filter((item,index)=>index>1);    //返回[3,4,5]
1
2
3

# each

  • 入参:function:Function 接收一个Lambda表达式
  • 返回值:Object
  • 函数说明:循环处理
var list = [{
    name : '小明'
},{
  name : '小花'
}];
return list.each(item=>item.put('age',18));    //循环添加age属性
1
2
3
4
5
6

# sort 0.4.2+

  • 入参:function:Function 接收一个Lambda表达式
  • 返回值:Object
  • 函数说明:对集合进行排序
var list = [1,5,2,3,6];
return list.sort((a,b)=>a-b);
1
2

# reserve 0.4.2+

  • 返回值:Object
  • 函数说明:对集合进行反转操作
var list = [1,5,2,3,6];
return list.reserve();
1
2

# join(拼接) 0.4.2+

  • 入参:separator : String 分隔符
  • 返回值:String
  • 函数说明:对集合进行拼接操作
var list = [1,5,2,3,6];
return list.join('-'); // 1-5-2-3-6
1
2

# shuffle 0.4.2+

  • 返回值:Object
  • 函数说明:对集合进行打乱处理
var list = [1,5,2,3,6];
return list.shuffle();
1
2

# max 0.4.5+

  • 返回值:Object
  • 函数说明: 取出集合最大值,如果找不到返回null
var list = [1,6,8,9,18,12];
return list.max();  // 18
1
2

# min 0.4.5+

  • 返回值:Object
  • 函数说明: 取出集合最小值,如果找不到返回null
var list = [6,1,8,9,18,12];
return list.min();  // 1
1
2

# sum 0.4.5+

  • 返回值:Object
  • 函数说明: 累加求和,计算不出返回0.0
var list = [1,2,3,4];
return list.sum();  // 10
1
2

# avg 0.4.5+

  • 返回值:Object
  • 函数说明: 计算平均值,计算不出返回null
var list = [1,2,3,4];
return list.avg();  // 2.5
1
2

# group 0.4.5+

  • 入参:condition : Function 分组条件 如:item=>item.xxx 根据xxx字段分组
  • 入参:mapping : Function 结果映射(省略时不做映射返回List) 如:list=>list.sum() 分组求和
  • 返回值:Map<Object, List<Object>>Map<Object, Object>
  • 函数说明: 分组
// List<Map<String,Object>>
var result = [
    { xxx : 1, yyy : 2, value : 11},
    { xxx : 1, yyy : 2, value : 22},
    { xxx : 2, yyy : 2, value : 33}
];


return result.group(item=>item.xxx + '_' + item.yyy)
/*
Map<Object,List<Object>>
{
    "1_2": [
            {"yyy": 2, "xxx": 1, "value": 11},
            {"yyy": 2, "xxx": 1, "value": 22}
    ],
    "2_2": [{"yyy": 2, "xxx": 2, "value": 33 }]
}
*/

return result.group(item=>item.xxx + '_' + item.yyy,list=>{
    count : list.size(),
    sum : list.map(v=>v.value).sum(),
    avg : list.map(v=>v.value).avg()
})
/*
Map<Object,Object>
{
    "1_2": { "avg": 16.5, "count": 2, "sum": 33 },
    "2_2": { "avg": 33,   "count": 1, "sum": 33 }
}
*/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# join(关联) 0.4.5+

  • 入参:target : Object 分组条件 如:item=>item.xxx 根据xxx字段分组
  • 入参:condition : Function 关联条件 如:(left,right)=>left.xxx == right.xxx
  • 入参:mapping : Function 结果映射(省略时会将两个对象合并处理)如:(left,right)=>{xxx : left.xxx, yyy : right.yyy}
  • 返回值:List<Object>
  • 函数说明: 将两个集合管理起来
var year2019 = [
    { "pt":2019, "item_code":"code_1", "sum_price":2234 },
    { "pt":2019, "item_code":"code_2", "sum_price":234 },
    { "pt":2019, "item_code":"code_3", "sum_price":12340 },
    { "pt":2019, "item_code":"code_4", "sum_price":2344 }
];
var year2018 = [
    { "pt":2018, "item_code":"code_1", "sum_price":1234.0 },
    { "pt":2018, "item_code":"code_4", "sum_price":1234.0 }
];
return year2019.join(year2018, (left,right)=>left.item_code == right.item_code,  (left,right)=>{
   '年份' : left.pt,
   '编号' : left.item_code,
   '今年' : left.sum_price,
   '去年' : right == null ? 'unknow' : right.sum_price,
   '环比去年增长' : right == null ? '-': (((left.sum_price - right.sum_price) / right.sum_price * 100) + "%")
});
/*
[
    {"年份": 2019, "今年": 2234, "去年": 1234, "环比去年增长": "81.03728%", "编号": "code_1"},
    {"年份": 2019, "今年": 234, "去年": "unknow", "环比去年增长": "-", "编号": "code_2"},
    {"年份": 2019, "今年": 12340,"去年": "unknow","环比去年增长": "-","编号": "code_3"},
    {"年份": 2019, "今年": 2344, "去年": 1234, "环比去年增长": "89.95138%", "编号": "code_4"}
]
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# asBean(转为Java对象) 0.4.6+

  • 入参:target : Class<?> 目标类型
  • 返回值:List<?>
  • 函数说明: 将List<Object> 转为目标List
import 'org.ssssssss.script.functions.User' as User;
var userList = [{
    age : 18,
    weight : 121,
    money : 123456789L,
    name : '法外狂徒',
    roles : [{
        name : 'admin',
        permissions : ['1','2','3']
    },{
      name : 'normal',
      permissions : ['4','5','6']
    }]
}]
return userList.asBean(User.class);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# every 0.4.7+

  • 入参:condition : Function 判断条件 如:value => value > 2
  • 返回值:boolean
  • 函数说明:判断集合是否都符合条件
var vals = [1,2,3,4,5,6,7];
return vals.every(e=>e > 0); // true
1
2

# some 0.4.7+

  • 入参:condition : Function 判断条件 如:value => value > 2
  • 返回值:boolean
  • 函数说明:判断集合是否有符合条件的
var vals = [1,2,3,4,5,6,7];
return vals.every(e=>e == 0); // false
1
2

# reduce 0.4.7+

  • 入参:function : Function 计算函数 如:(sum,val)=>sum + val
  • 返回值:Object
  • 函数说明:循环集合通过给定的计算函数返回一个新值
var vals = [1,2,3];
return vals.reduce((sum,val)=>sum + val); // 6
1
2

# skip 0.4.7+

  • 入参:value : int 跳过的数量,如:2
  • 返回值:Object
  • 函数说明:跳过指定个数截取集合
var vals = [1,2,3,4];
return vals.skip(2); // [3,4]
1
2

# limit 0.4.7+

  • 入参:value : int 限制的数量,如:2
  • 返回值:Object
  • 函数说明:取指定个数的集合
var vals = [1,2,3,4];
return vals.limit(3); // [1,2,3]
1
2

# findNotNull 0.4.7+

  • 返回值:Object
  • 函数说明:找到第一个不为null的值
var vals = [null,null,3,null];
return vals.findNotNull(); // 3
1
2
上次更新: 11/22/2020, 11:25:18 PM