javascript数组去重方法总结(推荐)


Posted in Javascript onMarch 20, 2019

 第一种--对象键值去重

Array.prototype.unique1 = function () {
   var r = {},
    temp = []
   for (var i = 0; i < this.length; i++) {
    if (!r[this[i]]) {
     r[this[i]] = 1
     temp.push(this[i])
    }
   }
   return temp
  }

第二种--splice删除去重

Array.prototype.unique2 = function () {
   for (var i = 0; i < this.length; i++) {
    for (var j = i + 1; j < this.length; j++) {
     if (this[i] === this[j]) {
      this.splice(j, 1)
      j--
     }
    }
   }
   return this
  }

第三种--利用数组indexOf方法

// 循环遍历当前数组,当前不在临时数组的,push
  Array.prototype.unique3 = function () {
   var temp = []
   for (var i = 0; i < this.length; i++) {
    if (temp.indexOf(this[i]) === -1) temp.push(this[i])
   }
   return temp
  }

第四种--数组下标

// 当前数组的第i项在当前数组第一次出现的位置不是i,当前项即重复,反之
  Array.prototype.unique4 = function () {
   var temp = [this[0]]
   for (var i = 1; i < this.length; i++) {
    if (this.indexOf(this[i]) === i) temp.push(this[i])
   }
   return temp
  }

第五种

// 先排序,找相邻的项
  // 这个会改变原来数组的顺序
  Array.prototype.unique5 = function () {
   var tempArr = this.sort(),
    temp = [tempArr[0]]
   for (var i = 1; i < tempArr.length; i++) {
    if (tempArr[i] !== temp[temp.length - 1]) temp.push(tempArr[i])
   }
   return temp
  }

第六种

// 优化遍历数组
  // 获取没重复的最右一值放入新数组
  Array.prototype.unique6 = function () {
   var temp = []
   for (var i = 0; i < this.length; i++) {
    for (j = i + 1; j < this.length; j++) {
     if (this[i] === this[j]) {
      i++;
      j = i;
     }
    }
    temp.push(this[i])
   }
   return temp
  }

第七种--es6 set

Array.prototype.unique7 = function () {
   var temp = new Set(this)
   return [...temp]
  }

第八种--filter

Array.prototype.unique8 = function () {
   return this.filter(function (ele, index, self) {
    return self.indexOf(ele) === index;
   })
  }

以上所述是小编给大家介绍的javascript数组去重方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery实现渐变弹出层和弹出菜单的方法
Feb 20 Javascript
jQuery实现的经典滑动门效果
Sep 22 Javascript
快速学习jQuery插件 Cookie插件使用方法
Dec 01 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
Aug 06 Javascript
Javascript刷新页面的实例
Sep 23 Javascript
AngularJS中的路由使用及实现代码
Oct 09 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
Dec 28 Javascript
详解Vue Elememt-UI构建管理后台
Feb 27 Javascript
angular2 组件之间通过service互相传递的实例
Sep 30 Javascript
如何用Node写页面爬虫的工具集
Oct 26 Javascript
vue+Element-ui实现登录注册表单
Nov 17 Javascript
react合成事件与原生事件的相关理解
May 13 Javascript
浅谈JavaScript面向对象--继承
Mar 20 #Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
Mar 20 #Javascript
vue踩坑记录之数组定义和赋值问题
Mar 20 #Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 #Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 #Javascript
利用Promise自定义一个GET请求的函数示例代码
Mar 20 #Javascript
详解VS Code使用之Vue工程配置format代码格式化
Mar 20 #Javascript
You might like
个人站长制做网页常用的php代码
2007/03/03 PHP
php PDO中文乱码解决办法
2009/07/20 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
Django 中 cookie的使用
2017/08/17 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
使用python实现省市三级菜单效果
2016/01/20 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
详解python数据结构和算法
2019/04/18 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
3种python调用其他脚本的方法
2020/01/06 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
python反扒机制的5种解决方法
2021/02/06 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
简述数据库的设计过程
2015/06/22 面试题
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android