js中的数组去重的多种方法
1. indexOf()方法
const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]
const newArr = []
arr.forEach(item => {
if(newArr.indexOf( item ) === -1){
newArr.push( item )
}
})
2. set类型 - ES6最常用,代码最少
const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]
// 将 set 中的数据一个一个解构出来作为数组的数据单元
const newArr = [ ...new Set( arr ) ]
3. 双重for循环 - ES5最常用
const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]
for( let i = 0 ; i <= arr.length-1 ; i++ ){
for( let j = i+1 ; j <= arr.length-1 ; j++ ){
if( arr[i] === arr[j] ){
arr.splice( j , 1)
j--
}
}
}
4. sort排序之后删除 - 消除数组坍塌
const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]
arr.sort(function(a,b){return a-b})
for( let i = 0 ; i <= arr.length-2 ; i++ ){
if( arr[i] === arr[i+1] ){
arr.splice(i+1 , 1)
// 防止数组坍塌
i--
}
}
5. 利用对象没有重复的属性 - 不太建议
const arr = [1,2,3,4,5,1,2,3,4,6,1,1,6,6,7,5,8]
const obj = {}
arr.forEach( item =>{
obj[item] = 1
})
const newArr = []
for( let key in obj ){
newArr.push(key)
}
console.log( newArr )
js中的数组去重的多种方法的更多相关文章
- js数组去重(多种方法)
// js数组去重 Array.prototype.fun1 = function(){ var arr = this, result = [], i, len = arr.length; for(i ...
- JS009. 数组去重的多种方法总结与一步步优化
两层for循环 这种函数的优点是兼容性好比较通用,缺点是时空复杂度都很直观的为O(n2),不利于维护和性能. var array = [1,1,'1','1'] function unique(arr ...
- 面试题常考&必考之--js中的数组去重和字符串去重
1.引入:首先得知道数组没有可以直接去重的方法,即直接[].unique()是不支持的, 会报“Uncaught TypeError: [].unique is not a function”错误, ...
- JS 中检测数组的四种方法
今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...
- js中Array数组的属性和方法
这是我自己整理出来的一些关于Array数组的属性和方法,即查即用. 1.Array.length属性:数组的项数组,始终返回0或者更大的值. 2.instanceof操作符:value instanc ...
- 【python常见面试题】之python 中对list去重的多种方法
在python相关职位的面试过程中,会对列表list的去重进行考察.(注意有时会要求保证去重的顺序性) 1.直观方法 li=[1,2,3,4,5,1,2,3] new_li=[] for i in l ...
- JS中json数组多字段排序方法(解决兼容性问题)(转)
前端对一个json数组进行排序,用户需要动态的根据自己的选择来对json数据进行排序. 由于后台表设计问题所以不能用sql进行排序,这里用到了js的sort方法. 如果对单字段排序,那么很简单,一个s ...
- 转:python中对list去重的多种方法
对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 最简单的思路就是: ids = [1,2,3,3,4,2,3,4,5,6,1] news_ids = [] for id in ...
- python中对list去重的多种方法
今天遇到一个问题,用了 itertools.groupby 这个函数.不过这个东西最终还是没用上. 问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变. 直观方法 最简单的思路就是: ...
- js中的数组去重
var str=["1","4","5","5","6","1","7 ...
随机推荐
- Linux离线安装Tomcat
系统环境: centos7.3.1611 openjdk version "1.8.0_102" apache-tomcat-9.0.36.tar.gz tomcat 安装 #链接 ...
- Transformer模型:Position Embedding实现
在自然语言处理(NLP)中,Transformer 模型是一个非常重要的里程碑,它通过自注意力(self-attention)机制极大地提高了处理序列数据的能力.在 Transformer 模型中,词 ...
- 【Python + yaml】之yaml文件数据驱动(包括DDT驱动)
写自动化测试代码中,数据驱动传递参数比较方便一些,也便于后期维护,下面介绍两种数据驱动: 下面是test.yaml文件: start_HRApp: ip: 127.0.0.1 port: 4723 i ...
- 一个.NET开源、免费的跨平台物联网网关
前言 今天大姚给大家分享一个基于.NET开源.免费的跨平台物联网网关:IoTGateway. 项目介绍 IoTGateway是一个基于.NET6的跨平台物联网网关.通过可视化配置,轻松的连接到你的任何 ...
- 浅触go中的单元测试
对于一个写好的功能模块,我们还需要对其进行单元测试,确保该模块不会出现其他bug,或者输出不是期望结果 对于一个go程序,主要设计以下命令: 执行测试 go test -v / go test 执行某 ...
- 非常简易的SpringBoot后台项目
非常简易的SpringBoot后台项目 1. 创建项目 使用IDEA创建 Spring项目,或在 https://start.spring.io/ . https://start.aliyun.com ...
- Centos7.9安装Docker和Docker compose
什么是docker环境 Docker环境是指在计算机中安装和配置了Docker引擎的运行环境.Docker是一种容器化平台,它提供了一种轻量级的虚拟化技术,能够将应用程序及其依赖项打包成一个独立的容器 ...
- C# and TypeScript – Enum Flags
前言 以前就有提过 Enum Flags,但平日不常用.最近翻 Angular 源码,发现它很多地方用到,而且没有封装语义代码.一堆符号真的看不惯啊... 于是又去复习了一遍,熟悉熟悉.顺便写一篇做记 ...
- Yarn 3.0 Plug'n'Play (PnP) 安装和迁移
前言 以前用 npm, 后来 yarn 火了就用 yarn. 后来 yarn 2.0 大改版, Angular 不支持就一直没用. 一直到去年的 Angular 13 才开始支持. 最近又开始写 An ...
- 当git仓库里面已经有上传好的框架时,二次上传到仓库需要的指令
初始化仓库 1 git init git add . "提交信息"里面换成自己的需要 如"first commit" git commit -m "提 ...