Files
30-seconds-of-code/javascript/snippets/matches-with.md
2023-05-01 22:35:56 +03:00

1006 B

title, type, tags, cover, dateModified
title type tags cover dateModified
Matches object properties based on function snippet
object
watermelon-bike 2020-10-21T21:54:53+03:00

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() to get all the keys of the second object.
  • Use Array.prototype.every(), Object.prototype.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