JavaScript数组去重实现方法小结


Posted in Javascript onJanuary 17, 2020

本文实例讲述了JavaScript数组去重实现方法。分享给大家供大家参考,具体如下:

一、ES3方法:

var arr = ['a', 'a', 'b', 'b', 'b', 'c', 'e', 'f', 1, 2, 2, 3, 3, 3];

创建一个空数组与原来数组进行比较

//与前面的数组进行比较(不会改变原数组)
function deleteRepeat() {
  var result = [];
  label: for(var i=0; i<arr.length; i++) {
    for(var j=0; j<result.length; j++) {
      if(result[j] == arr[i]) {
        continue label;
      }
    }
    result.push(arr[i]);
  }
  return result;
}
//与后面的进行比较(不会改变原数组)
function deleteRepeat() {
  var result = [];
  for(var i = 0; i < arr.length; i++) {
    for(var j = i+1; j < arr.length; j++) {
      if(arr[i] == arr[j]) {
        j = ++i;
      }
    }
    result.push(arr[i]);
  }
  return result;
}
// splice()方法 (会改变原数组)
function deleteRepeat() {
  for(var i = 0; i < arr.length; i++) {
    for(var j = i+1; j < arr.length; j++) {
      if(arr[i] == arr[j]) {
        arr.splice(j, 1);
        j--;
      }
    }
  }
  return arr;
}
// 利用对象的属性不能重复特点(不会改变原数组)
function deleteRepeat() {
  var result = [];
  var object = {};
  for(var i = 0; i < arr.length; i++) {
    var t = arr[i];
    if(!object[t]) {
      result.push(t);
      object[t] = true;
    } 
  }
  return result;
}
// 先排序再去重(只需要进行一次for循环、 会改变原数组)
function deleteRepeat() {
  var arr1 = arr.sort();
  var result = [];
  for(var i = 0; i < arr1.length; i++) {
    if(arr1[i] != arr1[i+1]) {
      result.push(arr1[i]);
    }
  }
  return result;
}

二、ES5方法:

利用IndexOf()方法

map()方法或forEach()方法或filter()方法

三、ES6方法

var a = [1, 2, 2, 3, 3, 3];
[...new Set(a)];
[1, 2, 3]

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

Javascript 相关文章推荐
jQuery 跨域访问问题解决方法
Dec 02 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
Mar 17 Javascript
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
Nov 23 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
jquery插件开发之选项卡制作详解
Aug 30 jQuery
JavaScript中重名的函数与对象示例详析
Sep 28 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
Feb 11 Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 Javascript
js中addEventListener()与removeEventListener()用法案例分析
Mar 02 Javascript
JS面向对象之多选框实现
Jan 17 #Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
Jan 17 #Javascript
JS面向对象之单选框实现
Jan 17 #Javascript
原生JavaScript实现的无缝滚动功能详解
Jan 17 #Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 #Javascript
React Hooks 实现和由来以及解决的问题详解
Jan 17 #Javascript
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 #Javascript
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
Python代码调试的几种方法总结
2015/04/15 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Python变量赋值的秘密分享
2018/04/03 Python
python更改已存在excel文件的方法
2018/05/03 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
python虚拟环境完美部署教程
2019/08/06 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
园林设计师自荐信
2013/11/18 职场文书
办公室内勤工作职责
2013/12/11 职场文书
协议书怎么写
2014/04/21 职场文书
奉献演讲稿范文
2014/05/21 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
2014年质检员工作总结
2014/11/18 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
毕业设计论文致谢词
2015/05/14 职场文书
建党伟业电影观后感
2015/06/01 职场文书
七年级数学教学反思
2016/02/17 职场文书
2019年大学推荐信
2019/06/24 职场文书