鸿蒙三方库 | harmony-utils之ArrayUtil集合过滤排序与分块详解
📅 2026/7/27 15:15:31
👁️ 次浏览
前言数组过滤、排序和分块是数据处理的核心操作。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工具库更多功能请参考官方文档与后续系列文章。
1. 项目概述与核心价值在电源设计、电机驱动或者电池管理系统的开发过程中,我们常常需要精确地知道流经某条路径的电流大小,或者监测某个关键节点的电压。这听起来简单,但实际操作起来,精度、实时性和噪声干扰是几个绕不开的坎。传…
📅 2026/7/27 15:15:31
说实话,每次看到有人拿着手机,一脸虔诚地刷着那些“2017年星座运势”,我就想笑。真的,不是我不信星座,是太信了反而觉得荒谬。那时候2017年刚过没多久,现在回头看,简直是一场大型的心理安慰剂实验。很多人问我,geo2017年星座运势视频还有没有参考价值?我的回答很直接:…
📅 2026/7/27 15:14:03
3步搭建你的B站视频解析神器:告别在线播放卡顿的终极方案 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse
还在为B站视频无法下载而烦恼吗?想要将优质的教学视频保存到本地反复…
📅 2026/7/27 15:14:31
1. 项目概述 今天我要分享一个基于LangGraph框架构建的智能代理系统实战项目。这个项目原本是Google Gemini团队提供的快速入门示例,但我对其进行了本地化改造,将API调用替换成了通义千问的接口,使其更适合国内开发者使用。 这个项目的核心在…
📅 2026/7/27 16:11:54
摘要: 双特异性T细胞衔接抗体(BiTE/TCE)和CAR-T、TCR-T等免疫细胞疗法在肿瘤治疗研究中具有重要价值,但这类治疗方式在产生抗肿瘤效应的同时,也可能引发T细胞过度活化、细胞因子释放综合征(CRS)…
📅 2026/7/27 16:11:54
1. 项目背景与行业痛点 风电功率预测与并网调度是新能源电力系统运行的核心技术环节。随着风电装机容量在电力系统中的占比不断提升,其波动性和不确定性给电网安全稳定运行带来了巨大挑战。根据行业实测数据,一个200MW的风电场若预测误差超过15%…
📅 2026/7/27 16:11:54
架构重构:从"毛坯房"到"精装修"
买房的时候,你可能觉得户型不好,想拆墙重装。但如果你已经住进去了呢?一边装修一边住,难度就大了。
架构重构就是给正在运行的生产系统"重新装修"——难度大、风险高,但不做又不行。
什么时候需要重构?…
📅 2026/7/27 16:11:54
响应式编程:让你的代码"异步非阻塞"
你点外卖,盯着手机等骑手接单、等商家接单、等骑手取餐、等骑手配送…每次你都在等,但有没有想过——等的时候你可以干别的事啊!
同步阻塞 = 你在餐厅门口站着等位,别人叫你你才能动 异步非阻塞 = 你取了号去逛商场,轮到你…
📅 2026/7/27 16:11:54
别信什么“稳赚不赔”,
全是扯淡。
我当初就是脑子进水,
觉得捡漏能发财,
结果被割得连底裤都不剩。那时候是2018年,
市面上到处都在吹geo2018年10月巨蟹这个概念。
我也没多想,
看着那所谓的“稀缺性”,
心里痒痒的。
毕竟谁不想在朋友圈里
显得自己有点眼光呢?我去线下…
📅 2026/7/27 16:10:16
现象在 WezTerm 终端中,包含中文路径的文本(如标签页标题、Shell 提示符、路径补全)中,某些汉字时而渲染为日文字形,时而显示为简体中文(中国大陆)字形。以「径」字为例,日文写法右侧…
📅 2026/7/27 0:00:07
这个问题看似在寻找一个答案,实际上是在寻找一种“值得继续投入的方向感”。很多人在问:
“人生有什么意义?”
深层可能是在问:
我现在做的事情值得吗?我的努力有没有价值?我的存在是不是重要?未…
📅 2026/7/27 0:00:07
1. 为什么MoE架构让大模型参数量翻倍却不增加推理成本?去年我在部署一个千亿参数大语言模型时,首次接触到混合专家模型(Mixture of Experts,简称MoE)架构。当时最让我震惊的是,这种架构的模型参数量可以达到…
📅 2026/7/27 0:00:07
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/27 1:11:21
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/27 1:11:21
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/27 1:11:21
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/27 7:11:38
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/26 17:10:53
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/27 5:11:32