博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断两个对象的值是否相等
阅读量:7106 次
发布时间:2019-06-28

本文共 1114 字,大约阅读时间需要 3 分钟。

判断两个对象的值是否相等

源代码

function isEqual (a, b) {  const classNameA = toString.call(a)  const classNameB = toString.call(b)  // 如果数据类型不相等,则返回false  if (classNameA !== classNameB) {    return false  } else {    // 如果数据类型相等,再根据不同数据类型分别判断    if (classNameA === '[object Object]') {      for (let key in a) {        if (!isEqual(a[key], b[key])) return false      }      for (let key in b) {        if (!isEqual(a[key], b[key])) return false      }      return true    } else if (classNameA === '[object Array]') {      if (a.length !== b.length) {        return false      } else {        for (let i = 0, len = a.length; i < len; i++) {          if (!isEqual(a[i], b[i])) return false        }        return true      }    } else if (classNameA === '[object Function]') {      return a.toString() === b.toString()    } else {      return Object.is(a, b)    }  }}

样例

const a = {  arr: [1, true, {a: 6, arr: [9, 0, 6, [5, 9]]}],  d: 0,  obj: { d: 9, arr: [5000]},  e: ()=>{},  f: [0]}const b = {  arr: [1, true, {a: 6, arr: [9, 0, 6, [5, 9]]}],  d: 0,  obj: { d: 9, arr: [5000]},  e: ()=>{},  f: [0]}console.log(isEqual(a, b))

转载地址:http://vlvhl.baihongyu.com/

你可能感兴趣的文章
Linux 安装 Apache web服务器
查看>>
struts2 遇到的问题 2
查看>>
Java问答:终极父类(3)
查看>>
彻底搞定Android开发中软键盘的常见问题
查看>>
Java使用RandomAccessFile读写文件
查看>>
程序员学习能力提升三要素
查看>>
《Java8实战》笔记-1.2.2传递代码:一个例子
查看>>
不懂技术的人不要对懂技术的人说这很容易实现
查看>>
HTML5之桌面提醒
查看>>
IDEA注册机
查看>>
微信APP支付 ,App无法调起微信
查看>>
Spring boot 内嵌tomcat,临时目录不存在 错误
查看>>
fedora16中virtualbox无法启动xp虚假机
查看>>
(十五)用JAVA编写MP3解码器——音频输出
查看>>
MyClouds开发指南》第1章 MyClouds微服务治理及快速开发平台简介
查看>>
mysql 时间格式化
查看>>
用JDK制作可能运行的JAR
查看>>
eval 解析 JSON 格式数据
查看>>
hibernate笔记(六)关于懒加载和load()方法之三——误区
查看>>
消息队里-消息队列应用场景
查看>>