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 相关文章推荐
javascript 写类方式之六
Jul 05 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
如何将一个String和多个String值进行比较思路分析
Apr 22 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
JQuery插入DOM节点的方法
Jun 11 Javascript
Bootstrap每天必学之缩略图与警示窗
Nov 29 Javascript
Backbone View 之间通信的三种方式
Aug 09 Javascript
jQuery中的AjaxSubmit使用讲解
Sep 25 Javascript
js实现复选框的全选和取消全选效果
Jan 03 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
Vue程序调试的方法
Jun 17 Javascript
基于vue实现探探滑动组件功能
May 29 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
PHP通用检测函数集合
2006/11/25 PHP
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
javascript学习网址备忘
2007/05/29 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
python发送HTTP请求的方法小结
2015/07/08 Python
Python中str.format()详解
2017/03/12 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python+pyqt5编写md5生成器
2019/03/18 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
办理生育手续介绍信
2014/01/14 职场文书
护士工作失误检讨书
2014/09/14 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
2015年暑假工作总结
2015/07/13 职场文书
一年级语文教学随笔
2015/08/14 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript