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 相关文章推荐
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
Sep 04 Javascript
js 替换
Feb 19 Javascript
jquery实现简单实用的弹出层效果代码
Oct 15 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
jQuery 判断元素整理汇总
Feb 28 Javascript
JavaScript数组push方法使用注意事项
Oct 30 Javascript
9102了,你还不会移动端真机调试吗
Mar 25 Javascript
解决Vue中使用keepAlive不缓存问题
Aug 04 Javascript
JS监听Esc 键触发事键
Apr 14 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
PHP4引用文件语句的对比
2006/10/09 PHP
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
Python装饰器的函数式编程详解
2015/02/27 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
《蚕姑娘》教学反思
2014/04/15 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
高中教师个人工作总结
2015/02/10 职场文书
运输公司工作总结
2015/08/11 职场文书
污染环境建议书
2015/09/14 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript