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 相关文章推荐
用JSON做数据传输格式中的一些问题总结
Dec 21 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
获取阴历(农历)和当前日期的js代码
Feb 15 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
May 24 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
Dec 23 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
Mar 17 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
layui的table中显示图片方法
Aug 17 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
Dec 06 jQuery
Vue使用zTree插件封装树组件操作示例
Apr 25 Javascript
Vue项目中配置pug解析支持
May 10 Javascript
关于Node.js中频繁修改代码重启服务器的问题
Oct 15 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
2014/07/18 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
javascript解析json实例详解
2014/11/05 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
Python Web服务器Tornado使用小结
2014/05/06 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
力学专业毕业生自荐信
2013/11/17 职场文书
文明倡议书范文
2014/04/15 职场文书
《菜园里》教学反思
2014/04/17 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
神农溪导游词
2015/02/11 职场文书
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技