指向同一地址的判断
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
后续补充值为引用类型的判断...