当前位置:网站首页>js 数组去重的常用方法
js 数组去重的常用方法
2022-08-02 03:22:00 【suzhiwei_boke】
如何对一个数组去重?
这个问题出现了好几次,而且很多面试官不满足你只给出一两种方法。
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
let unique= [...new Set(array)]; //es6 Set数据结构类似于数组,成员值是唯一的,有重复的值会自动去重。 //Set内部使用===来判断是否相等,类似'1'和1会两个都保存,NaN和NaN只会保存一个
2、遍历,将值添加到新数组,用indexOf()判断值是否存在,已存在就不添加,达到去重效果。
let a = ['1','2','3',1,NaN,NaN,undefined,undefined,null,null, 'a','b','b'];
let unique= arr =>{
let newA=[];
arr.forEach(key => {
if( newA.indexOf(key)<0 ){ //遍历newA是否存在key,如果存在key会大于0就跳过push的那一步
newA.push(key);
}
});
return newA;
}
console.log(unique(a)) ;//["1", "2", "3", 1, NaN, NaN, undefined, null, "a", "b"]
//ps:这个方法不能分辨NaN,会出现两个NaN。是有问题的,下面那个方法好一点。
3、遍历,将数组的值添加到一个对象的属性名里,并给属性赋值,对象不能添加相同属性名,以这个为依据可以实现数组去重,然后用Object.keys(对象)返回这个对象可枚举属性组成的数组,这个数组就是去重后的数组。
let a = ['1', '2', '3', 1,NaN,NaN,undefined,undefined,null,null, 'a', 'b', 'b'];
const unique = arr => {
var obj = {}
arr.forEach(value => {
obj[value] = 0;//这步新添加一个属性,并赋值,如果不赋值的话,属性会添加不上去
})
return Object.keys(obj);//`Object.keys(对象)`返回这个对象可枚举属性组成的数组,这个数组就是去重后的数组
}
console.log(unique(a));//["1", "2", "3", "NaN", "undefined", "null", "a", "b"]
这个方法会将 number,NaN,undefined,null,变为字符串形式,因为对象的属性名就是一个字符串,根据需求来吧,想想还是Set去重最简单也最有效。
边栏推荐
- getattr() function analysis
- JJWT tool class
- [详解C语言]一文带你玩转C语言小游戏---三子棋
- Phospholipid-polyethylene glycol-thiol, DSPE-PEG-Thiol, DSPE-PEG-SH, MW: 5000
- Knowledge Engineering Assignment 2: Introduction to Knowledge Engineering Related Fields
- MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细
- mysql卸载详细教程
- yolov5调用ip摄像头时出现的问题
- mysql中如何查看表是否被锁
- 【手把手带你学nRF52832/nRF52840 · (1)开发环境搭建】
猜你喜欢

DSPE-PEG-DBCO 磷脂-聚乙二醇-二苯并环辛炔 一种线性杂双官能聚乙二醇化试剂

PowerManagerService灭屏超时流程

APK的安装过程分析 PMS包管理器

「PHP基础知识」PHP中对象的使用

MySQL8.0安装教程,在Linux环境安装MySQL8.0教程,最新教程 超详细

「PHP基础知识」空值(null)的使用

科研试剂DMPE-PEG-Mal 二肉豆蔻酰磷脂酰乙醇胺-聚乙二醇-马来酰亚胺

Usage of JOIN in MySQL

Phospholipid-Polyethylene Glycol-Aldehyde DSPE-PEG-Aldehyde DSPE-PEG-CHO MW: 5000

subprocess.CalledProcessError: Command 'pip install 'thop'' returned non-zero exit status 1.
随机推荐
Mysql8创建用户以及赋权操作
Deveco studio 鸿蒙app访问网络详细过程(js)
【面经】米哈游数据开发一面二面面经
AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'
String comparison size in MySQL (date string comparison problem)
np.isnan ()
mysql卸载详细教程
AttributeError: Can't get attribute 'SPPF' on
远程调试、无cuDnn、自定义模块无法导入问题记录
磷脂-聚乙二醇-醛基 DSPE-PEG-Aldehyde DSPE-PEG-CHO MW:5000
[Basic Tutorial of Remote Control Development 1] Crazy Shell Open Source Formation Drone-GPIO (Remote Control Indicator Light Control)
【面试】失败的一次面试
RHCSA第二天
Detailed explanation of the usage of exists in mysql
一个结构体 = 另一个结构体(同类型结构体之间可直接赋值操作)
【博学谷学习记录】超强总结,用心分享 | 软件测试 接口测试基础
SSM integration
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boo
C语言 结构体定义方法
np.unique()函数