当前位置:网站首页>js判断一个对象是否在一个对象数组中
js判断一个对象是否在一个对象数组中
2022-08-04 15:42:00 【接着奏乐接着舞。】
目录
场景:
有一个对象数组,如:
var arr = [{"appName":"小何","appId":"1"},{"appName":"小王","appId":"2"}]一般来说,常见的场景有两个:
第一个是,比如鼠标点击按钮,往数组里push()一个对象,如果数组中已经存在了,那么就得提示不能添加。
第二个是,push()之后做去重处理,既对象数组去重。
第一个场景解法:如果数组中已经存在,就不能添加
使用includes()方法,意为存在,存在返回true,不存在返回false,重点是要结合JSON.stringify()序列化为字符串后再判断,以下是示例代码:
var arr = [{"appName":"小何","appId":"1"},{"appName":"小王","appId":"2"}]
var obj = {"appName":"小王","appId":"2"}
//如果数组arr中不存在字符串JSON.stringify(obj),那就可以添加,反之,则不添加
if(JSON.stringify(arr).includes(JSON.stringify(obj)) === false){
console.log('不存在')
arr.push(obj)
}else{
console.log('已存在')
}
小结:
es6新增的includes()方法很强大,字符串,数组,对象均可使用,返回一个布尔值,比之前常用的indexof()语义化更强,且includes()的性能不错!
第二个场景解法: 对象数组去重
我理解的对象数组去重是这样的:
就是他们的属性和值都得一样,且他们的长度也是一样的。
也就是说,key和value都得一样才行,而且不能多不能少。
试着手写了一下,嵌套了好几层循环,性能不好,直接一步到位,以下是我的最优解:
lodash是前端常用的JS方法库,就是将很多方法封装起来,方便使用。
使用lodash的
_.uniqWith()方法,结合_.isEqual比较函数,即可较为完美的解决问题。
需要注意的是,_.isEqual()方法也是非常强大的,作用是比较两个对象是否相等,这个方法非常实用,我经常用它,他是深层递归的,推荐。

代码示例:
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
边栏推荐
猜你喜欢

For循环控制

Xi'an Zongheng Information × JNPF: Adapt to the characteristics of Chinese enterprises, fully integrate the cost management and control system

ICDE‘22推荐系统论文之Research篇

The electromagnetic compatibility EMC protection study notes

What are the useful IT asset management platforms?

Semaphore 基本原理

解决dataset.mnist无法加载进去的情况

DocuWare平台——用于文档管理的内容服务和工作流自动化的平台(上)

《电磁兼容防护EMC》学习笔记

直播回放含 PPT 下载|基于 Flink & DeepRec 构建 Online Deep Learning
随机推荐
什么是 DevOps?看这一篇就够了!
How to monitor code cyclomatic complexity by refactoring indicators
云存储硬核技术内幕——(9) 相见时难别亦难
5 基本引用类型
74行代码实现浪漫的红心下落的动画效果
如何防止重复下单?
PHP 图片转PDF
有哪些好用的IT资产管理平台?
JVM调优-GC基本原理和调优关键分析
JVM Tuning-GC Fundamentals and Tuning Key Analysis
视频字幕API接口文档
成员变量与局部变量的区别有哪些
《2022 年上半年全球独角兽企业发展研究报告》发布——DEMO WORLD世界创新峰会圆满落幕
【Harmony OS】【FAQ】Hongmeng Questions Collection 2
Beginner crawler notes (collecting data)
What is the difference between member variable and local variable
C#命令行解析工具
【Jprofile 11.0 安装】
吴恩达机器学习[13]-支持向量机
Online Excel based on Next.js