最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑。

  数组去重的算法有很多种,以下是一种。

  思路如下:

  1. 定义一个空的对象obj;
  2. 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true;
  3. obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true;
  4. 循环的过程中如果有哪个元素(比如第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进行数组去重——一种高效的算法相关推荐

  1. Javascript中数组去重的六种方法

    数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...

  2. Python JavaScript 的数组去重

    "数组去重" 是实际应用中常用的操作,出现在面试题中的概率也很高,今天简述一下 Python 和 JavaScript 中数组去重的方法 python数组去重 >>&g ...

  3. JavaScript中数组去重的几种方法整理

    本人菜鸡,前两天去面试,发现再次碰到数组去重这道面试题,比较常见.能够达到去重效果的方法有好几个,感觉有必要整理一下其中几种常见实现: 1,思路:创建一个空数组,然后循环需要去重的数组,对比创建的数组 ...

  4. JavaScript数组去重6种方法

    数组去重涉及基础知识较多,总结了以下6个方法: 双重for循环,push新数组: 双重for循环,splice原数组: 单个for循环,遍历对象属性: 单个for循环,sort排序后遍历: ES5,i ...

  5. java数组去重_数组去重12种方案-你要的全在这

    首先我们先温习一下数组的常用的方法 pop push shift unshift slice splice sort reverse concat join indexOf lastIndexOf m ...

  6. (PASS)JAVA数组去重 三种方法 (不用集合)

    第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01;import java.sql.Array; import ...

  7. js 简单的数组去重13种方法

    js 数组去重 十几种数组去重的方法,有的去重构思可以大致相同. 上篇的几种数组去重 https://blog.csdn.net/weixin_47988564/article/details/106 ...

  8. javascript中数组的22种方法

    前面的话数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细 ...

  9. js(javascript)数组去重

    数组去重 说到数组去重小编准备了两种方案 1.第一种splice(删除项下标,删除几个) 现有数组 var arr = [1,2,3,3,6,2,6,1,4] 我们要去掉数组中重复项 那我们肯定要做对 ...

最新文章

  1. ASIHttpRequest使用前的配置
  2. Vue 项目实现按钮级别权限管理
  3. 有监督学习和无监督学习举例_对比自监督学习
  4. 数据挖掘相关知识介绍
  5. 计算机网络——链路层之PPP协议和HDLC协议
  6. C/C++混淆点-逗号运算符
  7. LeetCode-144:二叉树的前序遍历
  8. vue2学生签到管理系统案例
  9. 【ESP 保姆级教程】疯狂传感器篇 —— 案例:ESP8266 + 光敏光照传感器 + 串口输出
  10. MATLAB取整及位数
  11. 经验分享:如何做好产品可行性分析?
  12. html页面禁止保存图片,JavaScript 禁止用户保存图片的实现代码
  13. 运放TL08系列,功放LM386,8欧姆的扬声器
  14. Wondershare 有哪些不错的办公软件呢
  15. Web网页设计——“说旅游”
  16. 语雀实现收藏网页的功能(借助印象笔记)
  17. JSP爱心宠物诊所系统设计与实现
  18. 【大数据】《红楼梦》作者分析(QDU)
  19. Windows 下 C++ 利用 OpenCV glob 函数获取文件夹下所有文件绝对路径
  20. 广二师的计算机专业好不,惠州学院专业_广东第二师范学院和惠州学院非师范专业哪个比较好...

热门文章

  1. dll模块化设计与编程_FPGA设计原则经验分享
  2. (STL,map)反片语
  3. python中的装饰器、装饰器模式_python 设计模式之装饰器模式 Decorator Pattern
  4. 如何设置MySQL的环境变量
  5. java百马百担问题
  6. vue create()获取ref_vue-next+typescript 初体验
  7. arrays合并两个数组_每天一道力扣题: 88. 合并两个有序数组
  8. java周期_java 周期时期计算
  9. python基础入门(5)之运算符
  10. mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼