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 相关文章推荐
javascript 面向对象思想 附源码
Jul 07 Javascript
jquery如何实现锚点链接之间的平滑滚动
Dec 02 Javascript
Javascript中浮点数相乘的一个解决方法
Jun 03 Javascript
在HTML代码中使用JavaScript代码的例子
Oct 16 Javascript
jQuery实现鼠标点击弹出渐变层的方法
Jul 09 Javascript
基于vue.js实现图片轮播效果
Dec 01 Javascript
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
Node.js使用cookie保持登录的方法
May 11 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
Jul 12 Javascript
js实现简单模态框实例
Nov 16 Javascript
javascript实现视频弹幕效果(两个版本)
Nov 28 Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 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
域名查询代码公布
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
python中stdout输出不缓存的设置方法
2014/05/29 Python
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
如何写python的配置文件
2020/06/07 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
CSS3 box-sizing属性
2009/04/17 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
几个Shell Script面试题
2012/08/31 面试题
卫生标语大全
2014/06/21 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技