温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

js如何判断一个对象是否在一个对象数组中

发布时间:2022-08-04 10:29:52 来源:亿速云 阅读:109 作者:iii 栏目:开发技术

本篇内容主要讲解“js如何判断一个对象是否在一个对象数组中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“js如何判断一个对象是否在一个对象数组中”吧!

    场景:

    有一个对象数组,如:

    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()方法也是非常强大的,作用是比较两个对象是否相等,这个方法非常实用,我经常用它,他是深层递归的,推荐。

    js如何判断一个对象是否在一个对象数组中

    代码示例:

    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 }]

    到此,相信大家对“js如何判断一个对象是否在一个对象数组中”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    js
    AI