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 相关文章推荐
最佳的addEvent事件绑定是怎样诞生的
Oct 24 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
Jan 25 Javascript
JavaScript 判断浏览器是否支持SVG的代码
Mar 21 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
Nov 14 Javascript
异步JavaScript编程中的Promise使用方法
Jul 28 Javascript
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
基于JSONP原理解析(推荐)
Dec 04 Javascript
响应式框架Bootstrap栅格系统的实例
Dec 19 Javascript
使用vue-router在Vue页面之间传递数据的方法
Jul 15 Javascript
微信小程序之 catalog 切换实现解析
Sep 12 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
Apr 27 Javascript
Javascript如何递归遍历本地文件夹
Aug 06 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和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php 定界符格式引起的错误
2011/05/24 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python代码太长换行的实现
2019/07/05 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python实现分数序列求和
2020/02/25 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
简单了解如何封装自己的Python包
2020/07/08 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
主题酒店策划书
2014/01/28 职场文书
通讯稿范文
2015/07/22 职场文书
写给同事的离职感言
2015/08/04 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
创业计划书之熟食店
2019/10/16 职场文书
python模板入门教程之flask Jinja
2022/04/11 Python
Python Matplotlib绘制两个Y轴图像
2022/04/13 Python