JavaScript数组去重的两种方法推荐


Posted in Javascript onApril 05, 2016

1、数组去重;

Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法:

方法一:利用indexOf方法;

var aa=[1,3,5,4,3,3,1,4]
function arr(arr) {
  var result=[]
  for(var i=0; i<arr.length; i++){
    if(result.indexOf(arr[i])==-1){
      result.push(arr[i])
    }
  }
  console.log(result)
}      
arr(aa)

方法二:

function unique(arr) {
  var result = [], isRepeated;
  for (var i = 0, len = arr.length; i < len; i++) {
    isRepeated = false;
    for (var j = 0, len = result.length; j < len; j++) {
      if (arr[i] == result[j]) {  
        isRepeated = true;
        break;
      }
    }
    if (!isRepeated) {
      result.push(arr[i]);
    }
  }
  return result;
}

方法二,总体思路是把数组元素逐个搬运到另一个数组,搬运的过程中检查这个元素是否有重复,如果有就直接丢掉。从嵌套循环就可以看出,这种方法效率极低。我们可以用一个hashtable的结构记录已有的元素,这样就可以避免内层循环。恰好,在Javascript中实现hashtable是极为简单的,改进如下:

function unique(arr) {
  var result = [], hash = {};
  for (var i = 0, elem; (elem = arr[i]) != null; i++) {
    if (!hash[elem]) {
      result.push(elem);
      hash[elem] = true;
    }
  }
  return result;
}

以上这篇JavaScript数组去重的两种方法推荐就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在网页里看flash的trace数据的js类
Jan 10 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
Jun 05 Javascript
javascript简单实现滑动菜单效果的方法
Jul 27 Javascript
JQuery实现图片轮播效果
Sep 15 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
Feb 21 Javascript
JS实现键值对遍历json数组功能示例
May 30 Javascript
websocket4.0+typescript 实现热更新的方法
Aug 14 Javascript
Vue 设置axios请求格式为form-data的操作步骤
Oct 29 Javascript
js对象属性名驼峰式转下划线的实例代码
Sep 17 Javascript
jquery Deferred 快速解决异步回调的问题
Apr 05 #Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 #Javascript
JS中的forEach、$.each、map方法推荐
Apr 05 #Javascript
javascript HTML5 canvas实现打砖块游戏
Jun 18 #Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 #Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
Apr 05 #Javascript
JS简单编号生成器实现方法(附demo源码下载)
Apr 05 #Javascript
You might like
动态新闻发布的实现及其技巧
2006/10/09 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
javascript XMLHttpRequest对象全面剖析
2010/04/24 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
用python读写excel的方法
2014/11/18 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python获取url的返回信息方法
2018/12/17 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
致短跑运动员广播稿
2014/01/09 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
骨干教师申报材料
2014/12/17 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书