本篇文章给大家带来的内容是关于JavaScript中比较两个对象是否相等的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 这是我在一次面试中,被面试官所提问的一道题 在这次面试题中 相等:指的是对象的属性个数值相等 有这样两个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 以上就是JavaScript中比较两个对象是否相等的方法的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |