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的树控件实现代码(asp.net+json)
Jul 11 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
Apr 08 Javascript
javascript中Object使用详解
Jan 26 Javascript
JavaScript常用本地对象小结
Mar 28 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 Javascript
vue 中自定义指令改变data中的值
Jun 02 Javascript
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
微信小程序实现简易table表格
Jun 19 Javascript
抖音上用记事本编写爱心小程序教程
Apr 17 Javascript
element-ui表格合并span-method的实现方法
May 21 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
什么是短波收听SWL
2021/03/01 无线电
PHP下MAIL的另一解决方案
2006/10/09 PHP
mysql limit查询优化分析
2008/11/12 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
让您的菜单不离网站
2006/10/03 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
教师自荐书
2013/10/08 职场文书
质检员岗位职责
2013/12/17 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
Python函数中apply、map、applymap的区别
2021/11/27 Python
Python pyecharts绘制条形图详解
2022/04/02 Python
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
vue elementUI批量上传文件
2022/04/26 Vue.js