使用JavaScript进行数组去重——一种高效的算法
最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑。
数组去重的算法有很多种,以下是一种。
思路如下:
- 定义一个空的对象obj;
- 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true;
- obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true;
- 循环的过程中如果有哪个元素(比如第n个元素)和arr[0]相同,那么obj[arr[n]]将和obj[arr[0]]相同(都为true),因为key相同,value必定也相同。
如此便可去重。
代码如下:
1 function unique(arr){ 2 var obj={}; 3 var result=[]; 4 for(var i=0;i<arr.length;i++){ 5 if(!obj[arr[i]]){ 6 result.push(arr[i]); 7 obj[arr[i]]=true; 8 } 9 } 10 return result; 11 } 12 var array = [32,12,4,27,12,9,20,32,12,8,44,18]; 13 console.log(unique(array));
---------------------------------------------------------------------------------- 华丽的分割线 -------------------------------------------------------------------------------------
写完之后发现还有一种更简单的数组去重算法,使用了数组的filter方法,以下是代码:
1 Array.prototype.unique = function(){ 2 return this.filter(function (currentValue, index, arr){ // 当前元素 当前元素索引 当前元素属于的数组 3 return index <= arr.indexOf(currentValue); 4 }); 5 }; 6 var array = [1,2,3,12,3,2,1,2,30]; 7 array.unique();
--------------------------------------------------------------------------- 2019.1.17 Updates ---------------------------------------------------------------------------
今天发现一种更简单的数组去重方法,利用了ES6的Set数据结构:
[...new Set(array)]
简直无敌,妈妈再也不用担心面试官考我数据去重算法啦!
标签:
Javascript
, Algorithm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人