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 parseInt 大改造
Sep 27 Javascript
可编辑下拉框的2种实现方式
Jun 13 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
Oct 05 Javascript
js代码延迟一定时间后执行一个函数的实例
Feb 15 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
JavaScript实现的浏览器下载文件的方法
Aug 09 Javascript
jqgrid实现简单的单行编辑功能
Sep 30 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
May 23 jQuery
Vue组件模板的几种书写形式(3种)
Feb 19 Javascript
react PropTypes校验传递的值操作示例
Apr 28 Javascript
JavaScript多种图形实现代码实例
Jun 28 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/10/09 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
正隆泰信息技术有限公司上机题
2012/06/14 面试题
信息系统专业个人求职信范文
2013/12/07 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
小学班级管理心得体会
2016/01/07 职场文书
新课程改革心得体会
2016/01/22 职场文书