深度比较isEqual
Posted liangzhixiaolaohu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度比较isEqual相关的知识,希望对你有一定的参考价值。
// 是不是对象 function isObject(obj) { return typeof obj === "object" || obj !== null; } // 深度比较 function isEqual(obj1, obj2){ if (!isObject(obj1) || !isObject(obj2)) { // 值类型,(注意,参与equal的一般不会是函数) return obj1 === obj2; } if (obj1 === obj2) { return true; } // 两个都是对象或数组,且不相等 // 1、先取出obj1 和 obj2 的keys, 比较个数 let obj1Keys = Object.keys(obj1); let obj2Keys = Object.keys(obj2); if (obj1Keys.length !== obj2Keys.length) { return false; } // 2、以obj1 为基准 和 obj2 依次递归比较 for (let key in obj1) { // 比较当前 key 的 val -- 递归 const res = isEqual(obj1[key], obj2[key]); if (!res) { return false; } } // 3、全相等 return true; }
let obj1 = { a: 1, b: 2, c: { d: "d", e: ‘e‘ } } let obj2 = { a: 1, b: 2, c: { d: "d", e: ‘e‘ } } console.log(isEqual(obj1,obj2));
以上是关于深度比较isEqual的主要内容,如果未能解决你的问题,请参考以下文章
isEqual of NSManagedObject - 它如何确定相等性?
isEqual,isEqualTostring,==三者的区别