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 相关文章推荐
jQuery检查事件是否触发的方法
Jun 26 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
浅谈jquery.fn.extend与jquery.extend区别
Jul 13 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
AngularJS页面带参跳转及参数解析操作示例
Jun 28 Javascript
基于JS实现移动端左滑删除功能
Jul 28 Javascript
微信小程序wx.request实现后台数据交互功能分析
Nov 25 Javascript
vue-awesome-swiper滑块插件使用方法详解
Nov 27 Javascript
详解Nuxt.js Vue服务端渲染摸索
Feb 08 Javascript
vue动画效果实现方法示例
Mar 18 Javascript
轻松解决JavaScript定时器越走越快的问题
May 13 Javascript
JavaScript中遍历的十种方法总结
Dec 15 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
PHP5中MVC结构学习
2006/10/09 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
python集合用法实例分析
2015/05/30 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
python 重命名轴索引的方法
2018/11/10 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
自我评价如何写好?
2014/01/05 职场文书
业务员自荐信范文
2014/04/20 职场文书
社团活动总结范文
2014/04/26 职场文书
实习协议书
2015/01/27 职场文书
会计专业求职信范文
2015/03/19 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB