function objectEquals(object1, object2, traversedValues) {
  let keys1 = Object.keys(object1)
  let keys2 = Object.keys(object2)
  
  return structureEquals(
    object1,
    object2,
    keys1,
    keys2,
    (object, key) => object[key],
    traversedValues
  )
}
/**
 * Compares the two provided plain objects.
 * 
 * @param {Object<string, *>} object1 The 1st object to compare.
 * @param {Object<string, *>} object2 The 2nd object to compare.
 * @param {Map<Object, Object>} traversedValues A map of non-primitive values
 *        traversed in the first structure to their equal counterparts in the
 *        second structure.
 * @return {boolean} {@code true} if the objects are equal.
 */
Compares the two provided plain objects.

@param {Object} object1 The 1st object to compare.
@param {Object} object2 The 2nd object to compare.
@param {Map} traversedValues A map of non-primitive values
traversed in the first structure to their equal counterparts in the
second structure.
@return {boolean}  true if the objects are equal.
Compares the two provided plain objects . @param { Object } object1 The 1st object to compare . @param { Object } object2 The 2nd object to compare . @param { Map } traversedValues A map of non - primitive values traversed in the first structure to their equal counterparts in the second structure . @return { boolean } true if the objects are equal .
function objectEquals(object1, object2, traversedValues) {
  let keys1 = Object.keys(object1)
  let keys2 = Object.keys(object2)
  return structureEquals(
    object1,
    object2,
    keys1,
    keys2,
    (object, key) => object[key],
    traversedValues
  )
}
function objectEquals ( object1 , object2 , traversedValues ) { let keys1 = Object . keys ( object1 ) let keys2 = Object . keys ( object2 ) return structureEquals ( object1 , object2 , keys1 , keys2 , ( object , key ) => object [ key ] , traversedValues ) }
Compares the two provided plain objects.
Compares the two provided plain objects .