当前位置: 首页 > news >正文

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

前言

数组操作是开发中的高频操作,如去重、合并、差集、交集等。@pura/harmony-utilsArrayUtil封装了丰富的数组操作方法,简化了集合运算。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、ArrayUtil操作核心API

ArrayUtil提供了以下集合操作方法:

方法说明返回类型使用场景
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 安装依赖

ohpminstall@pura/harmony-utils

2.2 数组去重

import{ArrayUtil}from'@pura/harmony-utils';Button('数组去重').width('100%').onClick(()=>{try{letarr=[1,2,2,3,3,4];letdistinct=ArrayUtil.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];letunion=ArrayUtil.union(arr1,arr2);letinter=ArrayUtil.intersection(arr1,arr2);letdiff=ArrayUtil.difference(arr1,arr2);this.result=`并集: [${union}]\n交集: [${inter}]\n差集: [${diff}]`;}catch(e){this.result='异常: '+e;}})

三、完整页面示例

import{ArrayUtil}from'@pura/harmony-utils';@Entry@Componentstruct 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}from'@pura/harmony-utils';functionmergeTags(existingTags:string[],newTags:string[]):string[]{returnArrayUtil.union(existingTags,newTags);}

4.2 权限比较

functionfindNewPermissions(current:string[],required:string[]):string[]{returnArrayUtil.difference(required,current);}

五、注意事项

  1. 引用类型:distinct对对象数组可能需要自定义比较
  2. 顺序保留:去重后保留首次出现的元素顺序
  3. 空数组:方法对空数组安全,不会抛异常
  4. 初始化依赖:使用前需确保AppUtil.init()已调用
  5. 性能考虑:大数组操作时注意性能影响

六、常见问题

Q1: distinct对对象数组有效吗?

默认按引用比较,不同引用的相同内容对象不会被去重。

Q2: union会改变原数组吗?

不会,所有方法返回新数组,原数组不变。

Q3: difference的顺序重要吗?

重要,difference(A, B)返回A中有但B中没有的元素。

Q4: contains和Array.includes有什么区别?

contains增加了null安全检查,对null/undefined数组不会报错。


总结

ArrayUtil的集合操作方法为数组处理提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法简化去重、集合运算等操作。

本文基于@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。

http://www.jsqmd.com/news/1276999/

相关文章:

  • HTTP协议(Linux视角)
  • Git从入门到精通:全面指南
  • 2026年 东莞有铅锡膏/助焊剂品牌厂家:焊接性能与工艺稳定性深度解析 - 卓企推荐
  • Tiva™ TM4C129X EPI接口配置详解:从SDRAM到异步SRAM的实战指南
  • 基于YOLOv10的实时水藻检测系统开发实践
  • AB类立体声耳机音频放大器:TPA6110A2DGNR
  • 可以生成 word 的 Claude,搭配 AI 导出鸭优化文件转换,对比多种导出方式,解决排版错乱、格式变形各类办公难题
  • AI代理系统中的Agent Skills技术解析与实践
  • 终极指南:Spotube如何实现插件化元数据管理,打造你的专属音乐流媒体体验
  • 三步开启未来预测:用群体智能引擎看见每一个“如果“
  • COMSOL双温方程激光烧蚀模拟技术与工程实践
  • 鼠标一拖,批量搞定:LinkClump让你的网页浏览效率翻倍
  • 解锁Windows家庭版远程桌面:RDP Wrapper使用指南
  • 三步解锁九大网盘全速下载:开源脚本LinkSwift终极指南
  • 2026年 高温针筒锡膏品牌供应厂家:精准点胶与耐热稳定的专业选择 - 卓企推荐
  • 计算机毕业设计之基于springboot的购物网站
  • AI记忆系统设计:OpenClaw如何解决大模型记忆困境
  • GPipe流水线并行技术解析与优化实践
  • 【HR总监严审的AI总结标准】:揭秘2024年升职加薪必备的7项AI生成硬指标
  • 如何免费解锁Cursor Pro完整功能:3步实现AI编程助手无限使用
  • 猕猴桃检测数据集解析与应用实践
  • VMware Workstation 17 Pro 安装 Ubuntu 22.04 LTS 虚拟机完整教程
  • 2026实力之选:重庆臻进财科技有限公司,景区/民宿/防腐/移动木屋建造品牌机构 - 品牌发掘
  • 怎么判断外贸询盘是不是高质量商机?林芳老师的询盘分级SOP - 外贸圈集团
  • DSBGA封装解析:从LM3561实例看芯片封装设计与SMT工艺要点
  • Smithbox终极指南:零编程基础打造你的魂系游戏MOD
  • LyricsX终极指南:3分钟打造你的Mac智能歌词助手
  • Moneta Markets亿汇:把信息披露习惯做扎实,长期观察者更容易感受到的要点
  • 终极指南:Heimer跨平台思维导图软件的完整使用教程
  • Claude 出来的内容如何去除 #** 符号 结合 AI 导出鸭实操解析