鸿蒙三方库 | harmony-utils之ArrayUtil集合过滤排序与分块详解

发布时间:2026/7/27 15:15:43
鸿蒙三方库 | harmony-utils之ArrayUtil集合过滤排序与分块详解 前言数组过滤、排序和分块是数据处理的核心操作。pura/harmony-utils的ArrayUtil封装了这些高级数组操作方法让数据处理更加简洁。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、ArrayUtil过滤排序核心APIArrayUtil提供了以下高级数组操作方法方法说明返回类型使用场景filter(array, predicate)过滤T[]条件筛选sortBy(array, key)按属性排序T[]列表排序chunk(array, size)分块T[][]分页/分组flatten(array)扁平化T[]嵌套展开groupBy(array, key)分组Map数据分组count(array, predicate)计数number统计计数1.1 核心特性简洁易用封装复杂逻辑为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃函数式风格支持谓词函数灵活定义过滤条件1.2 操作方法对照方法输入输出说明filter[1,2,3,4] 偶数[2,4]条件筛选chunk[1,2,3,4] 2[[1,2],[3,4]]固定大小分块flatten[[1,2],[3,4]][1,2,3,4]嵌套展开groupBy按属性分组Map分类汇总二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 数组过滤import{ArrayUtil}frompura/harmony-utils;Button(数组过滤).width(100%).onClick((){try{letarr[1,2,3,4,5,6];letevenarr.filter(nn%20);this.result原数组: [${arr}]\n偶数: [${even}];}catch(e){this.result异常: e;}})2.3 数组分块Button(数组分块).width(100%).onClick((){try{letarr[1,2,3,4,5,6];letchunksArrayUtil.chunk(arr,2);this.result原数组: [${arr}]\n分块(2):${JSON.stringify(chunks)};}catch(e){this.result异常: e;}})三、完整页面示例import{ArrayUtil}frompura/harmony-utils;EntryComponentstruct ArrayFilterDemo{Stateresult:string;build(){Column({space:12}){Button(过滤偶数).width(100%).onClick((){letarr[1,2,3,4,5,6];this.result偶数: [${arr.filter(nn%20)}];});Button(分块).width(100%).onClick((){this.result分块:${JSON.stringify(ArrayUtil.chunk([1,2,3,4],2))};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 分页列表import{ArrayUtil}frompura/harmony-utils;functionpaginateList(items:string[],page:number,pageSize:number):string[]{letchunksArrayUtil.chunk(items,pageSize);returnchunks[page-1]||[];}4.2 数据分组展示interfaceStudent{name:string;grade:string;score:number;}functiongroupByGrade(students:Student[]):Mapstring,Student[]{returnArrayUtil.groupBy(students,grade);}五、注意事项不可变性方法返回新数组不修改原数组空数组安全对空数组操作返回空结果chunk边界最后一块可能小于指定大小初始化依赖使用前需确保AppUtil.init()已调用性能考虑大数组排序时注意性能六、常见问题Q1: sortBy支持降序吗sortBy默认升序降序可先排序再reverse。Q2: flatten支持多层嵌套吗取决于实现通常只展开一层多层需递归调用。Q3: groupBy的key可以是嵌套属性吗通常只支持一级属性嵌套属性需自定义分组函数。Q4: chunk对空数组返回什么返回空数组[]不会报错。总结ArrayUtil的过滤排序和分块方法为数据处理提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法简化数据筛选、分页、分组等操作。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。