JS中Object类型相等判定方法

  在之前的工作中,碰到一个Object类型数据相等判定的问题,由于时间匆忙,采用了最笨的方法,将两个Object中每一项数据逐一进行判定来完成的。后来通过调查找到了两种解决的办法。

方法一:封装一个compare方法来进行两个Object的比较

var compare = function (Obj_1,Obj_2) {

  var state = true;

  for (var key in Obj_1) {

    if (typeof (Obj_2[key]) === 'undefined') {

      state = false;

    } else {

      if (typeof (Obj_1[key]) === 'object') {

        state = 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类型来进行比较。

 

posted @ 2014-02-10 23:34  605  阅读(954)  评论(0编辑  收藏  举报