判断俩个js对象是否相等

124 阅读1分钟

指向同一地址的判断

 let obj1 = {
     a:1,
     b:2
 }
 let obj2 = obj1
 console.log(Object.is(obj1,obj2)) //true
 console.log(obj2 === obj1) //true

指向不同地址同时值均为简单类型

let object1 = {
   a:1,
   b:2,
   c:3
}
let object2 = {
   a:1,
   b:2,
   c:3
}
console.log(JSON.stringify(object1) == JSON.stringify(object2)) //true  (两个对象的键值顺序要一致)
const func = (obj1,obj2) =>{
   let keys1 = Object.keys(obj1)
   let keys2 = Object.keys(obj2)

   if(keys1.length !== keys2.length){return false}

   return keys1.every(item=> keys2.includes(item) && obj1[item] === obj2[item])
}
console.log(func(object1,object2)) // true  (键值顺序可不一样)
let object1 = {
   a:1,
   b:2,
   c:3
}
let object2 = {
   a:1,
   c:3,
   b:2,
}
const func= (obj1,obj2)=>{
   let keys1 = Object.getOwnPropertyNames(obj1)
   let keys2 = Object.getOwnPropertyNames(obj2)

   if(!keys1.length === keys2.length){return false}
   for(let i = 0; i<keys1.length;i++){
       var key = keys1[i]
       var value1 = obj1[key]
       var value2 = obj2[key]
       if(value1 !== value2){return false}
   }

   return true
}
console.log(func(object1,object2)) //true

后续补充值为引用类型的判断...