JS数组去重常用方法实例小结【4种方法】


Posted in Javascript onMay 28, 2018

本文实例讲述了JS数组去重常用方法。分享给大家供大家参考,具体如下:

js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法

贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill

Array.prototype.indexOf = Array.prototype.indexOf || function(item) {
  for (var i = 0, j = this.length; i < j; i++) {
    if (this[i] === item) {
      return i;
    }
  }
  return -1;
}
Array.prototype.forEach = Array.prototype.forEach || function(callback, thisArg) {
  if (!callback || typeof callback !== 'function') return;
  for (var i = 0, j = this.length; i < j; i++) {
    callback.call(thisArg, this[i], i, this);
  }
}

方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组

function removeDuplicatedItem(ar) {
  var ret = [];
  for (var i = 0, j = ar.length; i < j; i++) {
    if (ret.indexOf(ar[i]) === -1) {
      ret.push(ar[i]);
    }
  }
  return ret;
}

方法二:遍历数组,利用object对象保存数组值,判断数组值是否已经保存在object中,未保存则push到新数组并用object[arrayItem]=1的方式记录保存

function removeDuplicatedItem2(ar) {
  var tmp = {},
    ret = [];
  for (var i = 0, j = ar.length; i < j; i++) {
    if (!tmp[ar[i]]) {
      tmp[ar[i]] = 1;
      ret.push(ar[i]);
    }
  }
  return ret;
}

方法三:数组下标判断法, 遍历数组,利用indexOf判断元素的值是否与当前索引相等,如相等则加入

function removeDuplicatedItem3(ar) {
  var ret = [];
  ar.forEach(function(e, i, ar) {
    if (ar.indexOf(e) === i) {
      ret.push(e);
    }
  });
  return ret;
}

方法四:数组先排序, 然后比较俩数组一头一尾进行去重

function removeDuplicatedItem4(ar) {
  var ret = [],
    end;
  ar.sort();
  end = ar[0];
  ret.push(ar[0]);
  for (var i = 1; i < ar.length; i++) {
    if (ar[i] != end) {
      ret.push(ar[i]);
      end = ar[i];
    }
  }
  return ret;
}

有其他好的方式 ,欢迎补充。

Javascript 相关文章推荐
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
禁用页面部分JavaScript不是全部而是部分
Sep 03 Javascript
JS+CSS简单树形菜单实现方法
Sep 12 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
js闭包学习心得总结
Apr 17 Javascript
JavaScript实现美化滑块效果
May 17 Javascript
微信小程序数据统计和错误统计的实现方法
Jun 26 Javascript
vue 实现用户登录方式的切换功能
Apr 14 Javascript
JavaScript手写数组的常用函数总结
Nov 22 Javascript
原生JavaScript实现购物车
Jan 10 Javascript
解读Vue组件注册方式
May 15 Vue.js
jQuery中将json数据显示到页面表格的方法
May 27 #jQuery
javascript少儿编程关于返回值的函数内容
May 27 #Javascript
《javascript少儿编程》location术语总结
May 27 #Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
May 27 #Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
May 27 #Javascript
JS面向对象的程序设计相关知识小结
May 26 #Javascript
JavaScript门道之标准库
May 26 #Javascript
You might like
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
ES6中Math对象的部分扩展
2017/02/20 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
python 解析html之BeautifulSoup
2009/07/07 Python
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python全局变量操作详解
2015/04/14 Python
Python中List.count()方法的使用教程
2015/05/20 Python
python中eval与int的区别浅析
2019/08/11 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
Python对wav文件的重采样实例
2020/02/25 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
自荐信的五个重要部分
2013/10/29 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
2014年政协工作总结
2014/12/09 职场文书
律师函格式范本
2015/05/27 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
Python内置的数据类型及使用方法
2022/04/13 Python