首页 > 其他分享 >js 手写深比较

js 手写深比较

时间:2023-05-19 17:55:08浏览次数:36  
标签:obj1 obj2 return isObject js let obj 手写 比较

 

function isObject(obj) {
  return typeof obj === 'object' && obj !== null
}
function isEqual(obj1, obj2) {
  if (!isObject(obj1) || !isObject(obj2)) {
    return obj1 === obj2;
  }

  if (obj1 === obj2) {
    return true;
  }

  let obj1keys = Object.keys(obj1);
  let obj2keys = Object.keys(obj2);

  if (obj1keys.length !== obj2keys.length) {
    return false;
  }

  for(let k in obj1) {
    const res = isEqual(obj1[k], obj2[k]);
    if (!res) {
      return false
    }
  }
  return true;
}

 

标签:obj1,obj2,return,isObject,js,let,obj,手写,比较
From: https://www.cnblogs.com/bruce-gou/p/17415931.html

相关文章

  • js中 new 运算符的作用
    在JavaScript中,new运算符用于创建一个对象实例。它的作用是通过调用构造函数创建一个新的对象,并且将该对象作为上下文来执行构造函数,最后返回这个新创建的对象。使用new运算符的一般语法如下:letnewObj=newConstructor();其中,Constructor是一个构造函数,newObj是通过......
  • SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息
    SpringBoot实现WebSocket发送接收消息+Vue实现SocketJs接收发送消息参考:1、https://www.mchweb.net/index.php/dev/887.html2、https://itonline.blog.csdn.net/article/details/81221103?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2......
  • nodejs的cookie实现module(cookie.js)
     文件名:cookie.js//Directlysendcookietosystem,ifit'snode.jshandler,send://request.headers.cookie//Ifit'ssocket.iocookie,send://client.request.headers.cookiemodule.exports.cookie=function(co){this.cookies={};co&......
  • nodejs 解析php的session_decode 的module(session_decode.js)
    文件名:session_decode.js//exports.session_decode=function(){//varmessage="Hellofromtheohaitheremodule";//returnmessage;//};exports.session_decode=function(data){//*example:session_decode('firstName|s:5:&quo......
  • 使用jQuery加载js脚本
    动态加载Javascript是一项非常强大且有用的技术。这方面的主题在本站已经讨论了不少,我也经常会在一些个人项目上使用RequireJS和Dojo加载js。它们很强大,但有时候也会得不偿失。如果你使用的是jQuery,它里面有一个内置的方法可以用来加载单个js文件。当你需要延迟加载一些js插件或其......
  • nodejs npm国内镜像
    镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在):1.通过config命令npmconfigsetregistryhttp://registry.cnpmjs.orgnpminfounderscore(如果上面配置正确这个命令会有字符串response)2.命令行指定npm--registryhttp://registry.cn......
  • js根据姓名首字母构造字母索引列表
    js根据姓名首字母构造字母索引列表1、首先安装js-pinyin插件npminstalljs-pinyin2、引入js-pinyin//npminstalljs-pinyin下的映入importpinyinfrom'js-pinyin'//我的是下载下来将js-pinyin放在了当前文件目录下,如果是放在node_modeule里面的话如上引入就行import......
  • js 使用 eval 函数优化条件查询
    我们在写代码的使用,经常会遇到ifelse很长很长的代码,这种要怎么优化,一直是仁者见仁智者见智的我说下我的优化方案原始代码例如:if(income<=10000){ returnincome*0.365;}elseif(income<=30000){ return(income-10000)*0.2+35600;}elseif(income<=60000)......
  • uni.request(OBJECT)前端post请求数据json序列化
    一、uni-app前端post请求数据json序列化1.前置须知Content-Type实体头部用于指示资源的MIME(媒体)类型mediatype。在响应中,Content-Type标头告诉客户端实际返回的内容的内容类型。在请求中,客户端告诉服务器实际发送的数据类型。2.uni.request({})官方文档2.1dat......
  • JS删除对象中的某一属性(delete)
    通过delete操作符,可以实现对对象属性的删除操作<!--*@Descripttion:删除对象以及数组对象中的指定属性*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-07-0309:10:28*@LastEditors:zhangfan*@LastEditTime:2020-07-1515:03:00......