js两个对象的比较

const equals = (a,b) =>{
  if(a===b) return true;
  if(a instanceof Date && b instanceof Date){
    return a.getTime() === b.getTime()
  }
  if(!a || !b || (typeof a !== 'object' && typeof b!== 'object'))
    return a === b
  if(a.prototype !== b.prototype)
    return false;
  const keys = Object.keys(a)
  if(keys.length !== Object.keys(b).length)
    return false
  return keys.every(k => equals(a[k],b[k]));
}
const a = { name: 'John', age: 26 };
const b = { name: 'John', age: 26 };

equals(a, b); // true

const c = { name: 'John' };
const d = { name: 'John', age: undefined };

equals(c, d); // false
posted @ 2023-02-21 17:13  zeal666  阅读(162)  评论(0)    收藏  举报