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 13 Javascript
JavaScript实现拼音排序的方法
Nov 20 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
Javascript设计模式之观察者模式(推荐)
Mar 29 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
Jun 21 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 Javascript
bootstrap-Treeview实现级联勾选
Nov 23 Javascript
vue组件的写法汇总
Apr 12 Javascript
Electron中实现大文件上传和断点续传功能
Oct 28 Javascript
小程序实现图片预览裁剪插件
Nov 22 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
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
openPNE常用方法分享
2011/11/29 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
php实现等比例压缩图片
2018/07/26 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
Python psutil模块简单使用实例
2015/04/28 Python
浅谈对yield的初步理解
2017/05/29 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
python合并同类型excel表格的方法
2018/04/01 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
小学综合实践活动总结
2014/07/07 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫