JS中Object类型相等判定方法

  在之前的工作中,碰到一个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类型来进行比较。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。