当前位置:网站首页>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去重最简单也最有效。
边栏推荐
- sh: 1: curl: not found
- PowerManagerService灭屏超时流程
- Problems when yolov5 calls ip camera
- 跨域问题解决
- PCL—point cloud data segmentation
- Scientific research reagent DMPE-PEG-Mal dimyristoylphosphatidylethanolamine-polyethylene glycol-maleimide
- Mysql8创建用户以及赋权操作
- kettle 安装与配置
- AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘
- redis进行持久化时,有新的写操作将如何解决——写时复制
猜你喜欢
随机推荐
[详解C语言]一文带你玩转C语言小游戏---扫雷
@Configuration详解
Phospholipid-Polyethylene Glycol-Aldehyde DSPE-PEG-Aldehyde DSPE-PEG-CHO MW: 5000
DSPE-PEG-Silane,DSPE-PEG-SIL,磷脂-聚乙二醇-硅烷修饰活性基团
RHCSA第二天
MySQL分组后取最大一条数据【最优解】
Deveco studio 鸿蒙app访问网络详细过程(js)
np.unique() function
3分钟带你了解微信小程序开发
subprocess.CalledProcessError: Command 'pip install 'thop'' returned non-zero exit status 1.
MySQL分库分表
String comparison size in MySQL (date string comparison problem)
The usage of json type field in mysql
Detailed explanation of the usage of exists in mysql
Debian 10 NTP Service Configuration
Redis simple study notes
错误:with open(txt_path,‘r‘) as f: FileNotFoundError: [Errno 2] No such file or directory:
docker 安装 sqlserver中的坑点
np.isnan ()
C语言 结构体定义方法








