自建社区网站邢台网站建设行情

张小明 2026/1/19 22:27:07
自建社区网站,邢台网站建设行情,互动的网站,wordpress怎么弄中文❤ 写在前面 如果觉得对你有帮助的话#xff0c;点个小❤❤ 吧#xff0c;你的支持是对我最大的鼓励~ 个人独立开发wx小程序#xff0c;感谢支持#xff01;前言#xff1a;为什么需要数组去重#xff1f; 想象一下#xff0c;你正在整理一个装满各种颜色袜子的抽屉。你…❤ 写在前面如果觉得对你有帮助的话点个小❤❤ 吧你的支持是对我最大的鼓励~个人独立开发wx小程序感谢支持前言为什么需要数组去重想象一下你正在整理一个装满各种颜色袜子的抽屉。你会发现有很多双相同颜色的袜子为了节省空间你会把重复的袜子拿出来。在前端开发中处理数据时也会遇到类似情况——数组中的重复元素会浪费资源、影响性能甚至导致数据错误。今天我们就来探索前端开发中数组去重的七种方法每种方法都有其独特的“武器特性”方法一Set大法ES6推荐这是目前最简洁、最高效的方法就像一把锋利的瑞士军刀constarr[1,2,2,3,4,4,5];constuniqueArr[...newSet(arr)];console.log(uniqueArr);// [1, 2, 3, 4, 5]原理图原始数组 → Set容器自动去重 → 展开为数组 → 去重后的数组优点代码简洁性能优秀缺点无法处理特殊对象去重如对象、NaN等特殊情况需注意方法二Filter IndexOf经典组合这种方法像是侦探办案检查每个元素是否是第一次出现functionunique(arr){returnarr.filter((item,index){returnarr.indexOf(item)index;});}constarr[苹果,香蕉,苹果,橙子,香蕉];console.log(unique(arr));// [苹果, 香蕉, 橙子]流程图开始 ↓ 遍历数组每个元素 ↓ 检查当前元素首次出现位置是否等于当前位置 ↓ 是 → 保留元素 ↓ 否 → 过滤掉 ↓ 返回新数组方法三Reduce累积器使用reduce像是用漏斗过滤只保留第一次遇到的元素constarr[1,2,2,3,3,3,4];constuniqueArrarr.reduce((acc,current){if(!acc.includes(current)){acc.push(current);}returnacc;},[]);console.log(uniqueArr);// [1, 2, 3, 4]方法四双层循环最原始的方法这是最基础的实现方式就像手动检查每双袜子functionunique(arr){constresult[];for(leti0;iarr.length;i){letisDuplicatefalse;for(letj0;jresult.length;j){if(arr[i]result[j]){isDuplicatetrue;break;}}if(!isDuplicate){result.push(arr[i]);}}returnresult;}方法五Object键值法利用对象的键名不可重复的特性functionunique(arr){constobj{};constresult[];arr.forEach(item{if(!obj[item]){obj[item]true;result.push(item);}});returnresult;}⚠️注意这种方法会将数字和字符串视为相同键如1和1会被认为是重复的。方法六Map数据结构Map比Object更适合处理复杂类型的去重functionunique(arr){constmapnewMap();constresult[];arr.forEach(item{if(!map.has(item)){map.set(item,true);result.push(item);}});returnresult;}// 可以处理对象引用去重constobj1{name:张三};constobj2{name:张三};constarr[obj1,obj2,obj1];console.log(unique(arr).length);// 2obj1只出现一次obj2是不同引用方法七排序相邻去重法先排序然后比较相邻元素functionunique(arr){constsortedArr[...arr].sort();constresult[sortedArr[0]];for(leti1;isortedArr.length;i){if(sortedArr[i]!sortedArr[i-1]){result.push(sortedArr[i]);}}returnresult;}特殊场景处理1. 对象数组去重// 根据对象的某个属性去重functionuniqueByKey(arr,key){constmapnewMap();returnarr.filter(item{if(!map.has(item[key])){map.set(item[key],true);returntrue;}returnfalse;});}constusers[{id:1,name:Alice},{id:2,name:Bob},{id:1,name:Alice},// 重复ID];console.log(uniqueByKey(users,id));// 前两个对象2. 处理NaN的重复// Set可以正确处理NaN去重constarr[NaN,NaN,1,2,1];console.log([...newSet(arr)]);// [NaN, 1, 2]性能对比实验让我们通过一个简单的性能测试来看看各种方法的效率差异// 生成测试数据consttestArray[];for(leti0;i10000;i){testArray.push(Math.floor(Math.random()*1000));}// 测试函数执行时间functiontestPerformance(fn,arr){conststartperformance.now();fn(arr);constendperformance.now();returnend-start;}// 测试结果通常如下时间从短到长// 1. Set方法 √// 2. Object键值法// 3. Map方法// 4. Filter IndexOf// 5. Reduce方法// 6. 排序相邻法// 7. 双层循环选择合适的方法决策流程图开始选择去重方法 ↓ 需要考虑性能吗 → 是 → 使用Set方法最快 ↓否 数组中有对象吗 → 是 → 使用Map或根据属性去重 ↓否 需要兼容老浏览器吗 → 是 → 使用FilterindexOf或Object键值法 ↓否 代码简洁更重要吗 → 是 → 使用Set或Reduce ↓否 使用FilterindexOf平衡选择总结与最佳实践现代项目首选[...new Set(arr)]- 简洁高效对象数组去重使用Map或根据特定属性去重兼容性要求Filter IndexOf或Object键值法性能敏感场景Set方法最快其次是Object键值法代码可读性Reduce方法语义清晰适合函数式编程实战小挑战试试这个综合题目// 有一个混合类型的数组如何去除所有类型的重复constmixedArray[1,1,1,true,true,true,null,undefined,null,{a:1},{a:1},// 注意这两个对象看起来一样但引用不同[1,2],[1,2]];// 你的去重策略是什么提示可能需要结合多种方法或者自定义比较函数结语数组去重是前端开发中的基础但重要技能。不同的场景需要不同的方法就像工具箱里的不同工具各有各的用途。掌握这些方法不仅能提高代码效率还能让你的解决方案更加优雅。希望这篇博客能帮助你在下次遇到数组去重问题时能够自信地选择最合适的方法
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

海南行指网站开发公司网页游戏手机怎么玩

LangGPT 完整指南:3步掌握AI文本处理的终极技巧 【免费下载链接】LangGPT 项目地址: https://gitcode.com/gh_mirrors/lan/LangGPT 在当今AI技术快速发展的时代,如何高效利用大语言模型解决实际文本处理需求成为许多人的痛点。LangGPT作为面向大…

张小明 2026/1/17 16:42:29 网站建设

济南集团网站建设价格怎么做简单的企业网站

"为什么我的电子书转换总是卡在环境配置?"、"明明有GPU却用不上加速?"、"中文语音合成怎么总是断断续续?"——这些困扰是否也曾让你头疼不已?🤔 【免费下载链接】ebook2audiobook Conve…

张小明 2026/1/17 16:42:29 网站建设

天河做网站开发装饰设计软件

引言我们正处在一个由基础模型(Foundation Models)驱动的时代。GPT、Llama、Claude等大规模预训练语言模型(LLM)已成为理解和生成语言的通用引擎,展现出惊人的能力。然而,这些强大的通用模型如同未经雕琢的璞玉,要将其应用于特定场…

张小明 2026/1/17 16:42:31 网站建设

欧米茄手表价格及图片官方网站数据库型网站

ROCm开源平台支持AMD显卡运行DDColor 在数字时代,越来越多的家庭和机构开始尝试修复那些泛黄、模糊的老照片——这些承载着记忆的影像,往往因为年代久远而失去了原本的色彩。过去,这样的图像修复任务只能依赖专业软件或昂贵硬件,尤…

张小明 2026/1/17 16:42:32 网站建设

南京装修公司做网站怎么制作页面边框

Poppler Windows版本是一款专为Windows系统用户设计的免费PDF处理工具,提供预编译的二进制文件和完整的依赖组件,让您无需复杂配置即可实现PDF文档解析、页面渲染和文本提取等核心功能。作为Windows平台上最高效的PDF处理解决方案,它彻底简化…

张小明 2026/1/17 16:42:32 网站建设

写作网站哪个好用怎样做酒店网站ppt模板

HeyGem 数字人视频生成系统批量版 WebUI 二次开发实践 在虚拟内容创作需求井喷的今天,数字人技术正从实验室走向千行百业。无论是企业宣传、在线教育,还是智能客服与虚拟主播,能够自动驱动口型同步、表情自然的AI数字人视频,已成为…

张小明 2026/1/17 14:52:03 网站建设