判断对象中是否包含另一个对象

お早う,盆友们。
有的时候可能我们需要去进行一些对象(object)的判断。

	var obj1 = { a: 1 }
	var obj2 = { a: 1 }
    console.log(obj1 === obj2); // false

如上,在长度、内容相等时,我们去判断,依然不会像等,这是关于堆的问题,两个对象不在同一个堆中时,即使我们看着值是相等的,但是我们获取到的判断依然不会是true

但是如果我们需要判断的对象更长,在不知道他的键的时候,该如何判断一个对象是否包含一个对象时,这又是一个问题。

	var obj1 = { a: 1, b: 2, c: 3 }
    var obj2 = { a: 1 }

如上,在两个对象未知时,我们如何去判断obj1包含obj2

	var obj1 = { a: 1, b: 2, c: 3 }
    var obj2 = { a: 1 }
    function contains(a, b) {
        var contains = true
        for (const key in b) {
            if (a[key] != b[key]) {
                return false
            }
        }
        return contains
    }
    console.log(contains1(obj1, obj2));

我们可以用for …in…循环去遍历判断判断obj1是否包含obj2对象属性的同时去判断它的值是否相等
这么写有用吗,有用
但是这么写好看吗?
NO ~ ~ ~

我们对它进行一些更改

	var obj1 = { a: 1, b: 2, c: 3 }
    var obj2 = { a: 1 }
    let contains = (a, b) => Object.entries(b).every(([k, v]) => {
		return a[k] === v
	})
    console.log(contains(obj1, obj2))

上面代码是不是就变得更加的优雅了
在这里插入图片描述
Object.entries(对象) 将判断是否被包含的对象的键值对转换成数组形式,然后遍历和包含的对象进行判断,再因为every的特性,就可以得到 对象是否包含另一个对象的判断。
当然还可以再简写一点

let contains = (a, b) => Object.entries(b).every(([k, v]) => a[k] === v)

只需要return返回出去,那么大括号和return就可以简写了,没有大括号会默认return你所写的判断。

搞定,撤退!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值