您的当前位置:首页正文

JavaScript中比较两个对象是否相等的方法

2020-11-27 来源:榕意旅游网

有这样两个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中是否存在。此处使用了Object.hasOwnProperty() 仅对该对象中的属性进行对比(避免obj继承了父级的属性)

  • 承载第二步的基础对属性值进行比对。ES6中Object.is()来避免出现NaN不等于自身的问题

  • 或者使用 Underscore.js中的_.isEqual

    显示全文