当前位置:网站首页>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 }]
边栏推荐
猜你喜欢

numpy入门详细代码

项目里的各种配置,你都了解吗?

视频字幕API接口文档

AAAI‘22 推荐系统论文梳理

技术分享| 小程序实现音视频通话

【Jprofile 11.0 安装】

Many merchants mall system function and dismantling 24 - ping the strength distribution of members

"Research Report on the Development of Global Unicorn Enterprises in the First Half of 2022" released - DEMO WORLD World Innovation Summit ended successfully

张乐:研发效能的黄金三角及需求与敏捷协作领域的实践

SAP ABAP SteamPunk 蒸汽朋克的最新进展 - 嵌入式蒸汽朋克
随机推荐
云存储硬核技术内幕——(13) 抓手,组合拳与闭环
进程间通信方式
2022杭电多校3
【Go事】一眼看穿 Go 的集合和切片
重构指标之如何监控代码圈复杂度
西安纵横资讯×JNPF:适配中国企业特色,全面集成费用管控体系
分支控制if-else
RSA306B,500,600系列API接口代码
从-99打造Sentinel高可用集群限流中间件
Legal education combined with VR panorama, intuitively feel and learn the spirit of the rule of law
在Markdown文件中快速插入本地图片
MySQL select加锁分析
How to monitor code cyclomatic complexity by refactoring indicators
视频字幕API接口文档
现代 ABAP 编程语言中的正则表达式
阿尔萨斯监控平台&普罗米修斯监控平台对服务器资源的监控
06-总线
多商户商城系统功能拆解24讲-平台端分销会员
Roslyn 在 msbuild 的 target 判断文件存在
爬虫小白笔记(昨天的对于注意解析数据的补充)