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 相关文章推荐
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
JavaScript实现解析INI文件内容的方法
Nov 17 Javascript
livereload工具实现前端可视化开发【推荐】
Dec 23 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
May 21 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
Vue-cli项目部署到Nginx服务器的方法
Nov 01 Javascript
微信小程序国际化探索实现(附源码地址)
May 20 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
php 删除数组元素
2009/01/16 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javascript web页面刷新的方法收集
2009/07/02 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python处理文本换行符实例代码
2018/02/03 Python
python numpy格式化打印的实例
2018/05/14 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
python初步实现word2vec操作
2020/06/09 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
python复合条件下的字典排序
2020/12/18 Python
大专生工程监理求职信
2013/10/04 职场文书
服装创业计划书范文
2014/02/05 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
岗位聘任报告
2015/03/02 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
anaconda python3.8安装后降级
2021/06/11 Python