美文网首页
比较两个对象是否相等

比较两个对象是否相等

作者: EVA_return | 来源:发表于2018-03-12 12:43 被阅读0次
    废话不说,先贴上代码为敬
      cmp = function( x, y ) { 
    // If both x and y are null or undefined and exactly the same 
    if ( x === y ) { 
     return true; 
    } 
     
    // If they are not strictly equal, they both need to be Objects 
    if ( ! ( x instanceof Object ) || ! ( y instanceof Object ) ) { 
     return false; 
    } 
     
    //They must have the exact same prototype chain,the closest we can do is
    //test the constructor. 
    if ( x.constructor !== y.constructor ) { 
     return false; 
    } 
      
    for ( var p in x ) { 
     //Inherited properties were tested using x.constructor === y.constructor
     if ( x.hasOwnProperty( p ) ) { 
     // Allows comparing x[ p ] and y[ p ] when set to undefined 
     if ( ! y.hasOwnProperty( p ) ) { 
      return false; 
     } 
     
     // If they have the same strict value or identity then they are equal 
     if ( x[ p ] === y[ p ] ) { 
      continue; 
     } 
     
     // Numbers, Strings, Functions, Booleans must be strictly equal 
     if ( typeof( x[ p ] ) !== "object" ) { 
      return false; 
     } 
     
     // Objects and Arrays must be tested recursively 
     if ( ! Object.equals( x[ p ], y[ p ] ) ) { 
      return false; 
     } 
     } 
    } 
     
    for ( p in y ) { 
     // allows x[ p ] to be set to undefined 
     if ( y.hasOwnProperty( p ) && ! x.hasOwnProperty( p ) ) { 
     return false; 
     } 
    } 
    return true; 
    };
    
    使用:
    objA={ 
     a:'123', 
     b:'456'
    }; 
    objB={ 
     a:'123', 
     b:'000'
    }; 
    var isEqual= cmp(objA, objB); 
     console.log(isEqual);  // false 不相同,反之,true则两个对象相同

    相关文章

      网友评论

          本文标题:比较两个对象是否相等

          本文链接:https://www.haomeiwen.com/subject/mfjnfftx.html