tansci/.claude/skills/magic-script/references/collection-extensions.md
xuewuerduo f468d532b1 feat: 初始化tansci资产管理项目
包含以下模块:
- antdv-next-admin: Vue 3 + TypeScript + Ant Design Vue 管理后台
  - 设备/许可证/配件/耗材 CRUD 管理页面
  - 基础数据管理 (分类/位置/制造商/型号/供应商)
  - 业务管理 (故障报修/盘点/资产分配/资产申请/交易记录)
  - 下拉选项改造 (ID输入框 → 搜索下拉选择)
  - 资产状态字典化 (接入sys_dict系统)
  - 界面文案优化 (设备→资产, 在库/在用/维修中/已报废)
  - 修复 console 警告 (popupClassName, 重复组件注册)
- our-itam: Java Spring Boot + magic-api 后端服务
- fantastic-admin: 前端底层框架 (pnpm monorepo)
- ciyo-itasset: CIYO 资产模块
- magic-script-skill: Claude Code skill 定义
- .claude: 对话历史记录

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-05-17 21:41:22 +08:00

6.8 KiB
Raw Blame History

数组&集合扩展方法

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]

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]

each

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

sort

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

first

  • 返回值:Object
  • 函数说明:返回集合的第一项,集合为空时返回null
var list = [1,2,3,4,5]
return list.first(); // 1

last

  • 返回值:Object
  • 函数说明:返回集合的最后一项,集合为空时返回null
var list = [1,2,3,4,5]
return list.last(); // 5

reserve

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

join(拼接)

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

shuffle

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

max

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

min

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

sum

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

avg

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

group

  • 入参:condition : Function 分组条件
  • 入参:mapping : Function 结果映射(省略时不做映射返回List)
  • 返回值:Map<Object, List<Object>>Map<Object, 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)
// 结果:{"1_2": [{...}, {...}], "2_2": [{...}]}

join(关联)

  • 入参:target : Object 关联的集合
  • 入参:condition : Function 关联条件
  • 入参:mapping : Function 结果映射
  • 返回值:List<Object>
  • 函数说明:将两个集合关联起来
var year2019 = [
    { "pt":2019, "item_code":"code_1", "sum_price":2234 },
    { "pt":2019, "item_code":"code_2", "sum_price":234 }
];
var year2018 = [
    { "pt":2018, "item_code":"code_1", "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
});

asBean(转为Java对象)

  • 入参:target : Class<?> 目标类型
  • 返回值:List<?>
  • 函数说明:将List<Object> 转为目标List
import 'org.ssssssss.script.functions.User' as User;
var userList = [{
    age : 18,
    weight : 121,
    money : 123456789L,
    name : '法外狂徒'
}]
return userList.asBean(User.class);

every

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

some

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

reduce

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

find

  • 入参:functionFunction 查找函数
  • 返回值:Object
  • 函数说明:循环集合查找符合条件的对象
var list = [{name: 'A'}, {name:'B'}]
return list.find(it => it.name == 'A');  // {name: 'A'}

findIndex

  • 入参:functionFunction 查找函数
  • 返回值:Object
  • 函数说明:循环集合查找符合条件的对象位置
var list = [{name: 'A'}, {name: 'B'}]
return list.findIndex(it => it.name == 'A');  // 0

concat

  • 入参:Object,要连接的集合对象,可写多个
  • 返回值:Object
  • 函数说明:拼接一个或多个集合,返回新的集合
var list = [1];
return [1].concat([2]);  // [1,2] list不变
return [1].concat([2],[3, 4]);  // [1, 2, 3, 4] list不变

toMap

  • 入参:mappingKeyFunctionkey映射方法
  • 入参:mappingValueFunctionvalue映射方法可省略默认为本身
var list = [
    {id : 1, name: 'A'},
    {id : 2, name: 'B'},
    {id : 3, name: 'C'},
]
return list.toMap(k => k.id, v => v.name)   // {1: 'A', 2: 'B', 3: 'C'}

skip

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

limit

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

findNotNull

  • 返回值:Object
  • 函数说明:找到第一个不为null的值
var vals = [null, null, 3, null];
return vals.findNotNull(); // 3

distinct

  • 返回值:Object
  • 函数说明:去掉重复元素
var arr = [1, 2, 2, 3];
return arr.distinct(); // [1, 2, 3]

distinct(func)

  • 入参: 映射函数, 形如e -> e.id
  • 返回值:Object
  • 函数说明:根据函数返回值去重,去掉重复元素
var arr = [{id: 1, name: "xiaodong"}, {id:1, name: "magic-api"}];
return arr.distinct(e => e.id); // [{id: 1, name: "xiaodong"}]