JS 判断对象相等

判断对象相等

摘要:JS数组、对象的基本类型都是object,不同的是数组的原型是Array,而对象的原型是Object,因此区分一个变量是数组还是对象,只需使用instanceOf来判断他们的原型即可。而关于如何判断数组或对象是否相等,切记不能直接使用 “==”,“!=",”“===”,"!==",本文从引用、类型、值三个方面讲解数组和对象的相等性判断。

  1. 判断是否具有相同引用
    判断两个对象或数组是否具有相同的引用,可以使用Object.is(a,b),具体使用如图,对于数组或对象,对于引用相同的会返回true,不同引用会返回false。
    在这里插入图片描
  2. 判断是否具有相同类型(基础类型和原型)
    对于一个对象,我们可以使用toString方法来获取他们的基础类型与原型(数组使用toString返回的是数组元素字符串),toString返回的是一个形如’[“object”,“Object”]'的字符串,由于字符串是不可变量,所以我们可以直接使用"==="来比较,所以判断类型可以使用如下(其实这和同时使用typeof 和instanceof 具有一样的效果):
    其实这和同时使用typeof 和instanceof 具有一样的效果
  3. 判断是否具有相同的值
    这一部分介绍如何判断两个对象或数组具有相同的值,对于数组,在第2部分提起过,数组调用toString结果是它的字符串值,所以我们可以直接通过toString来判断数组值是否相等,这里给出与“===”对比例子:
    在这里插入图片描述
    那么要如何才能判断对象值相等呢?相对较麻烦的做法是自己写一个eq函数,逐个判断对象键值,对于值是对象的递归判断。一种偷鸡的做法是直接使用JSON.stringify将对象转化为JSON字符串,然后直接判断字符串是否相等即可。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值