在之前的工作中,碰到一个Object类型数据相等判定的问题,由于时间匆忙,采用了最笨的方法,将两个Object中每一项数据逐一进行判定来完成的。后来通过调查找到了两种解决的办法。
方法一:封装一个compare方法来进行两个Object的比较
var state = true;
var compare = function (Obj_1,Obj_2)
{
for (var key in Obj_1) {
if (typeof
(Obj_2[key]) === ‘undefined‘) {
state =
false;
} else {
if (typeof
(Obj_1[key]) === ‘object‘) {
compare(Obj_1[key],Obj_2[key]);
} else
{
if (Obj_1[key] !== Obj_2[key])
{
state = false;
}
}
}
}
return state;
}
下面我们进行简单的几种测试:
①var a = {x:{c:1,d:2},y:2};var b = {x:{c:1,d:2},y:2};
compare(a,b) => true;判断正确
②var a = {x:{c:1,d:2},y:2};var b = {x:{c:1,d:3},y:2};
compare(a,b) => false;判断正确
③var a = {x:{c:1,d:2},y:2};var b = {y:3};
compare(a,b) => false;判断正确
方法二:将Object转化为String类型来进行判定
利用JSON的stringify方法来进行转化
如:var a = {x:1,y:2},
JSON.stringify(a);将会输出"{"x":1,"y":2}",如此可以将两个Object类型转化为String类型来进行比较。