JS实现数组去掉重复值的六种方法实例讲解
时间:2018-11-18
本文章向大家介绍JS实现数组去重方法总结(六种方法),方法1:利用ES6的Set结合Array.from去重;方法二:利用ES5中的Index.Of()方法;方法三:利用数组中filter方法;方法四: 双层for循环,利用数组splice来去重;方法五 : 利用对象的特性(唯一性),不能出现相同的key值;方法六 : 排序后利用相邻的元素进行判断然后push。需要的朋友可以参考一下
朋友们,起风了,该“浪”起来了。
今天带大家“浪”的主题是js的数组去重,总结了几种方法如下,希望有所帮助,希望同行之间的交流,更希望有大神批评指点!!!
方法1:利用ES6的Set结合Array.from去重
var arr = [5,6,8,8,6,8,6];
var set = new Set(arr); //Set()它类似于数组(伪数组),但是成员的值都是唯一的,没有重复的值。
console.log(Array.from(set)) //Array.from()将一个类数组对象或者可遍历对象转换成一个真正的数组。
方法二:利用ES5中的Index.Of()方法
function noRepeat(arr){
var newArr = [];
for(var i in arr){
if(newArr.indexOf(arr[i]) == -1){ //arr中的值在newArr中不存在就返回 -1
newArr.push(arr[i]);
}
}
return newArr;
}
方法三:利用数组中filter方法
var arr = [5,6,8,8,6,8,6]; var newArr = arr.filter((items,index,arry)=>{ //按照某个条件过滤,返回满足条件的新数组 return arry.indexOf(items) === index //过滤掉下标相同的值 }) console.log(newArr)
方法四: 双层for循环,利用数组splice来去重
var arr = [5,6,8,8,6,8,6]; function reRepeat(arr){ for(var i =0;i < arr.length;i++){ for(var j = i+1;j<arr.length;j++){ if(arr[j] == arr[i]){ arr.splice(j,1) j-- //删除后下标减一,防止错过相同元素 } } } return arr } console.log(reRepeat(arr))
方法五 : 利用对象的特性(唯一性),不能出现相同的key值
var arr = [5,6,8,8,6,8,6]; function reRepeat(arr){ var obj={}; var newArr=[]; for(var i = 0;i < arr.length;i ++){ if(!obj[arr[i]]){ obj[arr[i]]=1; newArr.push(arr[i]); } } return newArr; } console.log(reRepeat(arr))
方法六 : 排序后利用相邻的元素进行判断然后push
var arr = [5,5,6,8,8,6,8,6]; function reRepeat(arr){ arr.sort( ( a , b ) => { return a - b; } ) //将数组进行排序 var newArr=[]; for(var i = 0;i < arr.length; i++){ if(arr[i]!=arr[i+1]){ newArr.push(arr[i]); } } return newArr; } console.log(reRepeat(arr))
- Python可以用来做什么?
- 使用View Model从表现层分离领域模型
- 代码实现WordPress点击进入随机一篇文章的方法
- UE4新手编程之创建空白关卡和添加碰撞体
- Office Web Apps
- hadoop: hive 1.2.0 在mac机上的安装与配置
- ASP.NET 5运行时升级到Beta5
- WordPress免插件仅代码实现“返回顶部、返回底部、评论”效果(样式二)
- jQuery/asp.net mvc DateTime 的处理
- WordPress主题下funtions.php的一段“恶意”代码
- eclipse/intellij idea 远程调试hadoop 2.6.0
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
- 区块链技术发展前景可观,银链原子链已开始投入正常交易
- 分布式服务框架 dubbo/dubbox 入门示例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django+Vue开发生鲜电商平台之9.个人中心功能开发
- Serverless 实战:通过 Component 实现多地域部署容灾
- SQL 行转列+窗口函数的实例
- 回答一下这 10 个最常见的 Javascript 问题
- 千万级数据表选错索引导致的线上慢查询事故
- 递归优化
- Webshell 高级样本收集
- 处理Sprint Boot与Storm1.2.2日志实现的冲突,使用logback记录日志
- Docker 命令总结
- python主题LDA建模和t-SNE可视化
- cannot import name ‘imresize‘ from ‘scipy.misc‘
- 一分钟基础:计算机为什么使用二进制?
- 使用hibernate validate做参数校验
- Leetcode No.4 寻找两个正序数组的中位数
- R语言 RevoScaleR的大规模数据集决策树模型应用案例