鸿蒙三方库 | harmony-utils之ArrayUtil集合操作与去重详解

鸿蒙三方库 | harmony-utils之ArrayUtil集合操作与去重详解
前言数组操作是开发中的高频操作如去重、合并、差集、交集等。pura/harmony-utils的ArrayUtil封装了丰富的数组操作方法简化了集合运算。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、ArrayUtil操作核心APIArrayUtil提供了以下集合操作方法方法说明返回类型使用场景distinct(array)数组去重T[]数据清洗union(arr1, arr2)并集T[]合并去重intersection(arr1, arr2)交集T[]共同元素difference(arr1, arr2)差集T[]独有元素contains(array, value)是否包含boolean存在检查isEmpty(array)是否为空boolean空值判断1.1 核心特性简洁易用封装复杂逻辑为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃集合运算支持并集、交集、差集等数学集合运算1.2 集合运算对照运算方法图示说明并集unionA∪B合并去重交集intersectionA∩B共同元素差集differenceA-BA中独有二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 数组去重import{ArrayUtil}frompura/harmony-utils;Button(数组去重).width(100%).onClick((){try{letarr[1,2,2,3,3,4];letdistinctArrayUtil.distinct(arr);this.result原数组: [${arr}]\n去重后: [${distinct}];}catch(e){this.result异常: e;}})2.3 集合运算Button(集合运算).width(100%).onClick((){try{letarr1[1,2,3];letarr2[2,3,4];letunionArrayUtil.union(arr1,arr2);letinterArrayUtil.intersection(arr1,arr2);letdiffArrayUtil.difference(arr1,arr2);this.result并集: [${union}]\n交集: [${inter}]\n差集: [${diff}];}catch(e){this.result异常: e;}})三、完整页面示例import{ArrayUtil}frompura/harmony-utils;EntryComponentstruct ArrayOpDemo{Stateresult:string;build(){Column({space:12}){Button(去重).width(100%).onClick((){this.result去重: [${ArrayUtil.distinct([1,2,2,3])}];});Button(集合运算).width(100%).onClick((){leta[1,2,3],b[2,3,4];this.result并集: [${ArrayUtil.union(a,b)}]\n交集: [${ArrayUtil.intersection(a,b)}];});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 标签去重import{ArrayUtil}frompura/harmony-utils;functionmergeTags(existingTags:string[],newTags:string[]):string[]{returnArrayUtil.union(existingTags,newTags);}4.2 权限比较functionfindNewPermissions(current:string[],required:string[]):string[]{returnArrayUtil.difference(required,current);}五、注意事项引用类型distinct对对象数组可能需要自定义比较顺序保留去重后保留首次出现的元素顺序空数组方法对空数组安全不会抛异常初始化依赖使用前需确保AppUtil.init()已调用性能考虑大数组操作时注意性能影响六、常见问题Q1: distinct对对象数组有效吗默认按引用比较不同引用的相同内容对象不会被去重。Q2: union会改变原数组吗不会所有方法返回新数组原数组不变。Q3: difference的顺序重要吗重要difference(A, B)返回A中有但B中没有的元素。Q4: contains和Array.includes有什么区别contains增加了null安全检查对null/undefined数组不会报错。总结ArrayUtil的集合操作方法为数组处理提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法简化去重、集合运算等操作。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。