Skip to content

Latest commit

 

History

History
27 lines (23 loc) · 916 Bytes

matchesWith.md

File metadata and controls

27 lines (23 loc) · 916 Bytes
title tags
matchesWith
object,type,function,intermediate

Compares two objects to determine if the first one contains equivalent property values to the second one, based on a provided function.

  • Use Object.keys(source) to get all the keys of the second object, then Array.prototype.every(), Object.hasOwnProperty() and the provided function to determine if all keys exist in the first object and have equivalent values.
  • If no function is provided, the values will be compared using the equality operator.
const matchesWith = (obj, source, fn) =>
  Object.keys(source).every(key =>
    obj.hasOwnProperty(key) && fn
      ? fn(obj[key], source[key], key, obj, source)
      : obj[key] == source[key]
  );
const isGreeting = val => /^h(?:i|ello)$/.test(val);
matchesWith(
  { greeting: 'hello' },
  { greeting: 'hi' },
  (oV, sV) => isGreeting(oV) && isGreeting(sV)
); // true