使用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)]
简直无敌,妈妈再也不用担心面试官考我数据去重算法啦!
转载于:https://www.cnblogs.com/kagol/p/5343173.html
使用JavaScript进行数组去重——一种高效的算法相关推荐
- Javascript中数组去重的六种方法
数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...
- Python JavaScript 的数组去重
"数组去重" 是实际应用中常用的操作,出现在面试题中的概率也很高,今天简述一下 Python 和 JavaScript 中数组去重的方法 python数组去重 >>&g ...
- JavaScript中数组去重的几种方法整理
本人菜鸡,前两天去面试,发现再次碰到数组去重这道面试题,比较常见.能够达到去重效果的方法有好几个,感觉有必要整理一下其中几种常见实现: 1,思路:创建一个空数组,然后循环需要去重的数组,对比创建的数组 ...
- JavaScript数组去重6种方法
数组去重涉及基础知识较多,总结了以下6个方法: 双重for循环,push新数组: 双重for循环,splice原数组: 单个for循环,遍历对象属性: 单个for循环,sort排序后遍历: ES5,i ...
- java数组去重_数组去重12种方案-你要的全在这
首先我们先温习一下数组的常用的方法 pop push shift unshift slice splice sort reverse concat join indexOf lastIndexOf m ...
- (PASS)JAVA数组去重 三种方法 (不用集合)
第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01;import java.sql.Array; import ...
- js 简单的数组去重13种方法
js 数组去重 十几种数组去重的方法,有的去重构思可以大致相同. 上篇的几种数组去重 https://blog.csdn.net/weixin_47988564/article/details/106 ...
- javascript中数组的22种方法
前面的话数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细 ...
- js(javascript)数组去重
数组去重 说到数组去重小编准备了两种方案 1.第一种splice(删除项下标,删除几个) 现有数组 var arr = [1,2,3,3,6,2,6,1,4] 我们要去掉数组中重复项 那我们肯定要做对 ...
最新文章
- ASIHttpRequest使用前的配置
- Vue 项目实现按钮级别权限管理
- 有监督学习和无监督学习举例_对比自监督学习
- 数据挖掘相关知识介绍
- 计算机网络——链路层之PPP协议和HDLC协议
- C/C++混淆点-逗号运算符
- LeetCode-144:二叉树的前序遍历
- vue2学生签到管理系统案例
- 【ESP 保姆级教程】疯狂传感器篇 —— 案例:ESP8266 + 光敏光照传感器 + 串口输出
- MATLAB取整及位数
- 经验分享:如何做好产品可行性分析?
- html页面禁止保存图片,JavaScript 禁止用户保存图片的实现代码
- 运放TL08系列,功放LM386,8欧姆的扬声器
- Wondershare 有哪些不错的办公软件呢
- Web网页设计——“说旅游”
- 语雀实现收藏网页的功能(借助印象笔记)
- JSP爱心宠物诊所系统设计与实现
- 【大数据】《红楼梦》作者分析(QDU)
- Windows 下 C++ 利用 OpenCV glob 函数获取文件夹下所有文件绝对路径
- 广二师的计算机专业好不,惠州学院专业_广东第二师范学院和惠州学院非师范专业哪个比较好...
热门文章
- dll模块化设计与编程_FPGA设计原则经验分享
- (STL,map)反片语
- python中的装饰器、装饰器模式_python 设计模式之装饰器模式 Decorator Pattern
- 如何设置MySQL的环境变量
- java百马百担问题
- vue create()获取ref_vue-next+typescript 初体验
- arrays合并两个数组_每天一道力扣题: 88. 合并两个有序数组
- java周期_java 周期时期计算
- python基础入门(5)之运算符
- mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼