第一种是比较常规的方法

思路:

1.构建一个新的数组存放结果

2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比

3.若结果数组中没有该元素,则存到结果数组中

Array.prototype.unique1 = function(){var res = [this[0]];for(var i = 1; i < this.length; i++){var repeat = false;for(var j = 0; j < res.length; j++){if(this[i] == res[j]){repeat = true;break;}}if(!repeat){res.push(this[i]);}}return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1());

第二种方法比上面的方法效率要高

思路:

1.先将原数组进行排序

2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置

3.如果不相同,则将该元素存入结果数组中

Array.prototype.unique2 = function(){this.sort(); //先排序var res = [this[0]];for(var i = 1; i < this.length; i++){if(this[i] !== res[res.length - 1]){res.push(this[i]);}}return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique2());

第二种方法也会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了。

第三种方法(推荐使用)

思路:

1.创建一个新的数组存放结果

2.创建一个空对象

3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。

说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

Array.prototype.unique3 = function(){var res = [];var json = {};for(var i = 0; i < this.length; i++){if(!json[this[i]]){res.push(this[i]);json[this[i]] = 1;}}return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3());

原文链接:http://www.jb51.net/article/46154.htm

转载于:https://www.cnblogs.com/liuhongxia/p/6946275.html

js数组去重的三种常用方法相关推荐

  1. 原生JS数组去重的几种方法

    有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢? 这能怎么办,自己手动实现嘛.(以下代码直接在原型上添加的的方法,为的就是和原 ...

  2. js数组去重的4个方法

    面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项.据我所知,百度.腾讯.盛大等都在面试里出过这个题目. 这个问题看起来简单,但是其实暗藏杀机. 考的不仅仅是实现这个功能,更 ...

  3. js数组去重(9种方法),你都会了吗?

    以下共有九种数组去重的方式和详解(包含对象数组去重): 1.利用Array.from(new Set)去重: // 1.利用set去重 // Set是es6新增的数据结构,似于数组,但它的一大特性就是 ...

  4. JS 数组去重的4个方法

    JavaScript 数组去重的方法 方法一: 两层for语句遍历判断 方法二: 通过数组API indexOf()进行筛选 方法三: 通过数组API includes()进行筛选 方法四: 通过Se ...

  5. js数组 去重的5种方法

    // 数组去重 var arr = [1, 2, 2, 3, 4, 4, 5, 6, 7, 7, 4, 3, 5, 7, 11, 12, 11]; var newArr = [];//方法1最优 se ...

  6. js数组去重的几种方法

    // 数组去重1:var arr = [1, 6, 6, 6, 3, 9, 4, 9, 3, 8, 2, 2]var newArr = []console.log(arr, '原数组');var fl ...

  7. js数组如何按照固定的下标去重_js数组去重的三种常用方法总结

    思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 代码如下: Array.prototype ...

  8. js数组去重的四种方法

    四种算法来实现这个目的: Array.prototype.unique1 = function () {var n = []; //一个新的临时数组for (var i = 0; i < thi ...

  9. js 数组去重的几种方法

    1. new Set 的两种方法 let arr = [1, 0, 0, 2, 9, 8, 3, 1];function unique(arr) {return Array.from(new Set( ...

最新文章

  1. 如何用计算机玩出花样,PPT图片玩出新花样
  2. Oracle Advanced Security:Column Encryption Overhead
  3. 和平精英为什么找不到服务器,和平精英为什么登不上去 和平精英游戏登不上原因分析...
  4. ylbtech-Unitity-CS:Hello world
  5. 数据产品必知的4层技术知识
  6. id_Tech5_challenges--siggraph09
  7. ZCMU 1048: 子串
  8. 第一章计算机网络概述答案,第一章 计算机网络概述[3]
  9. Oracle(四):PL/SQL、存储函数、存储过程、触发器
  10. php 显示中文utf,php adodb 从mysql数据库中输出中文显示到utf编码网页乱码问题
  11. 死磕算法!35篇算法设计实例+6本必读书打包送你
  12. PCHunter_32X64_2022_03最新版
  13. 分享一个 电子书下载网站 支持 ebook pdf azw3 epub mobi
  14. 韩语在线翻译图片识别_如何用扫描全能王将图片转成文字?
  15. 买了腾讯云服务器怎么ping,腾讯云服务器如何禁止Ping的功能
  16. 无线WIFI系统如何解决短信认证功能?
  17. ip-纯真库:批量获取ip归属地
  18. android layout_gravity center,android: layout_gravity与gravity区别及动态设置
  19. adobe xd_如何在Adobe XD中创建简历简历网站模板
  20. VSCode + Latex +Texlive 编译 biber格式参考文献时 VSCode的配置方法

热门文章

  1. 全新出击!《Java开发手册(嵩山版)》解读手册升级下载
  2. 【趣话编程】如果张东升是个程序员
  3. 深度解析 | 基于DAG的分布式任务调度平台:Maat
  4. 如何打开设计思路,避免不断改稿?只需提前做好这一步
  5. ADAMoracle预言机的发展趋势和特点
  6. 表单一次性上传多个文件
  7. 如何跟面试公司谈论薪资?
  8. web服务器负载架构
  9. 使用SQLPLUS生成HTML报表
  10. Oracle 11g 新特性简介