js deepEqual & shallowEqual 小算法实现

Posted Ajaxkong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js deepEqual & shallowEqual 小算法实现相关的知识,希望对你有一定的参考价值。


1
function deepEqual(x, y) { 2 if (x === y) { 3 return true; 4 } else if ((typeof x == "object" && x != null) && (typeof y == "object" && y != null)) { 5 if (Object.keys(x).length != Object.keys(y).length) 6 return false; 7 8 for (var prop in x) { 9 if (y.hasOwnProperty(prop)) { 10 if (!deepEqual(x[prop], y[prop])) 11 return false; 12 } 13 else 14 return false; 15 } 16 17 return true; 18 } 19 else 20 return false; 21 }
 1 function shallowEqual(x, y) {
 2   if (x === y) {
 3     return true;
 4   } else if ((typeof x == "object" && x != null) && (typeof y == "object" && y != null)) {
 5     if (Object.keys(x).length != Object.keys(y).length)
 6       return false;
 7 
 8     for (var prop in x) {
 9       if (y.hasOwnProperty(prop)) {
10         if ((x[prop] !== y[prop]))
11           return false;
12       }
13       else
14         return false;
15     }
16 
17     return true;
18   }
19   else
20     return false;
21 }

 

以上是关于js deepEqual & shallowEqual 小算法实现的主要内容,如果未能解决你的问题,请参考以下文章

Go语言 bytes.Equal() 和 reflect.DeepEqual() 的不同

用 Mocha 进行 Javascript 测试中 assert.equal 和 assert.deepEqual 的区别?

assert.deepEqual()

Java-Arrays类-deepEquals()和equals()详解

Java中Arrays类的两个方法:deepEquals和equals

golang源代码reflect.DeepEqual(x,y)函数