console.log(Object.is(+0,-0)) //false 但是控制台为true
console.log(Object.is(NaN,NaN)) // true 但是控制台是false
const uniqueArray = (arr)=>{
const result = []
outer:for(const item of arr){
for(r of result){
if(equals(r,item)){
continue outer
}
}
result.push(item)
}
}
function isPrimitive(value){
return value === null || (typeof value !== 'object' && typeof value !== 'function')
}
function equals(value1,value2){
if(isPrimitive(value1) && isPrimitive(value2)){
return Object.is(value1,value2)
}
const entries1 = Object.entries(value1)
const entries2 = Object.entries(value2)
if(entries1.length !== entries2.length){
return false
}
for(const [key,value] of entries1){
if(!equals(value,value2[key])){
return false
}
}
}