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 18 Javascript
详解AngularJS的通信机制
Jun 18 Javascript
javascript中的Function.prototye.bind
Jun 25 Javascript
jQuery回到顶部的代码
Jul 09 Javascript
jQuery实现ajax无刷新分页页码控件
Feb 28 Javascript
ES6中Iterator与for..of..遍历用法分析
Mar 31 Javascript
javascript中this用法实例详解
Apr 06 Javascript
基于 webpack2 实现的多入口项目脚手架详解
Jun 26 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
highcharts 在angular中的使用示例代码
Sep 20 Javascript
JavaScript交换变量的常用方法小结【4种方法】
May 07 Javascript
JS轻量级函数式编程实现XDM二
Jun 16 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
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
php绘制圆形的方法
2015/01/24 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
老生常谈进程线程协程那些事儿
2017/07/24 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
销售人员求职的自我评价分享
2014/03/15 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
师德先进个人材料
2014/12/20 职场文书
毕业实习感受与体会
2015/05/26 职场文书
Nginx实现会话保持的两种方式
2022/03/18 Servers