简单判断两个对象值相等
/* 判断两个数组值相等
@params Array(arr1)
@params Array(arr1)
@return Boolean(flag)
/
function equalArray(arr1,arr2) {
let flag=true; //先假设两个数组值相等
arr1=Array.from(new Set(arr1)); //先去重,之后转换成数组
arr2=Array.from(new Set(arr2));
// console.log(arr1,arr2)
if(arr1.length!=arr2.length) {
flag=false;
} else {
for(let i=0;i<arr1.length;i++) {
if(!arr2.includes(arr1[i])) {
flag=false;
}
}
}
return flag;
}
/
@params obj1(Object)
@params obj2(Object)
@return flag(Boolean) 为true值相等,为false值不相等
*/
function equalObject(obj1, obj2) {
let flag = true; //先假设两个对象值相等
let len1 = Object.keys(obj1); //通过Object.keys()方法变成对象中key变成数组元素
let len2 = Object.keys(obj2);
if (len1.length != len2.length) { // 如果两者长度不一致,则两者key个数不一样,那么显而知道两个对象值不相等
flag = false;
} else { //两者长度一致
if (!equalArray(len1, len2)) { // 如果两者长度一致,但两者key值存在不同,那么这两者对象值就不相等
flag = false;
} else { //两者key值一样
for (let key in obj1) {
if (obj1[key] != obj2[key]) { //如果两者的value值存在不一样,则两者对象值就不一样
flag = false;
}
}
}
}
return flag;
}
let obj1 = { name: 'hong', age: 18 };
let obj2 = { age: 18, name: 'hong' }
console.log(equalObject(obj1, obj2),equalObject({name:'hsc'},{names:'hsc'}))
以上是个人思路和想法,可能存在很大问题,如果你们还有其他想法,或者存在错误,请在评论上评论,谢谢