博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS面试题之比较两个对象是否相等?
阅读量:6760 次
发布时间:2019-06-26

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

这是我在一次面试中,被面试官所提问的一道题

在这次面试题中

相等:指的是对象的属性个数值相等

有这样两个obj

let obj1 = {    name:'李德华',    age:18,    price:NaN}let obj2 = {    name:'张德华',    age:18,    price:NaN}

我能想到的一种方案

function compare(obj1,obj2){    if(Object.keys(obj1).length != Object.keys(obj2).length){      return false    }else{      for(key in obj1){        if(obj2.hasOwnProperty(key)){            if( !Object.is(obj1[key],obj2[key])){                return false;            }        }else{          return false        }      }      return true    }}

解答过程的思考

  • 由于obj没有length,我只能通过Object.keys()转化成数组
  • 进入第二步,对象中的属性在另一个obj中是否存在。此处使用了 仅对该对象中的属性进行对比(避免obj继承了父级的属性)
  • 承载第二步的基础对属性值进行比对。ES6中来避免出现NaN不等于自身的问题

或者使用 Underscore.js中的

祝大家在金三银四的面试中取得满意的结果!

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

你可能感兴趣的文章
JSP里面的虚拟目录
查看>>
【329】word 替换文本高级用法
查看>>
自动化测试用例编写原则
查看>>
crontab定时任务以及其中中文乱码问题
查看>>
CSAPP buffer lab记录——IA32版本
查看>>
Hyperledger fabric多机的环境部署
查看>>
关于sqlserver2008 bcp根据数据表导出xml格式文件的小记
查看>>
总结:栈和队列的学习
查看>>
线段树(可能还会有树状数组吧)
查看>>
Android应用程序内部启动Activity过程(startActivity)的源代码分析
查看>>
《Python从小白到大牛》第9章 数据结构
查看>>
Xcode中四种build for 的区别
查看>>
酷客多小程序百城宣讲会-嵊州站完美落幕
查看>>
搞机年代,ivvi用“爱情”细分市场
查看>>
思科路由器开机进入 miniIOS 的原因分析
查看>>
卢松松:性格决定网站风格
查看>>
Management Console 工具管理类软件通用开发框架(开放源码)
查看>>
Gnome 3.2 发布计划及新功能
查看>>
已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性...
查看>>
利用bobo-browse 实现lucene的分组统计功能
查看>>