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 相关文章推荐
firefo xml 读写实现js代码
Jun 11 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
Jun 20 Javascript
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
查找iframe里元素的方法可传参
Sep 11 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
May 21 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 Javascript
关于vue.js过渡css类名的理解(推荐)
Apr 10 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
微信小程序中转义字符的处理方法
Mar 28 Javascript
vue.js实现回到顶部动画效果
Jul 31 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
Nov 09 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 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
js实现常用排序算法
2016/08/09 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Python中扩展包的安装方法详解
2017/06/14 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
linux下进程间通信的方式
2013/01/23 面试题
MYSQL基础面试题
2012/05/13 面试题
财务部绩效考核方案
2014/05/04 职场文书
团队口号大全
2014/06/06 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
基于docker安装zabbix的详细教程
2022/06/05 Servers