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 相关文章推荐
js图片实时加载提供网页打开速度
Sep 11 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 Javascript
ionic实现可滑动的tab选项卡切换效果
Apr 15 Javascript
JavaScript实现DOM对象选择器
Sep 24 Javascript
微信小程序 UI布局常用技巧整理总结
Dec 05 Javascript
jquery实现tab键进行选择后enter键触发click行为
Mar 29 jQuery
lhgcalendar时间插件限制只能选择三个月的实现方法
Jul 03 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
vue.js template模板的使用(仿饿了么布局)
Aug 13 Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
微信小程序实现点击生成随机验证码
Sep 09 Javascript
Ant Design的Table组件去除
Oct 24 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访问数组最后一个元素的函数end()用法
2015/03/18 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
jQuery each()小议
2010/03/18 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
王纯业的Python学习笔记 下载
2007/02/10 Python
Python实现大文件排序的方法
2015/07/10 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
python 实时遍历日志文件
2016/04/12 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
django-filter和普通查询的例子
2019/08/12 Python
python文字转语音的实例代码分析
2019/11/12 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
怎样声明子类
2013/07/02 面试题
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
新农村建设汇报材料
2014/08/15 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js