Сопоставление свойств объектов с функцией
Для начала практики программирования откройте Терминал/SSH и введите node
.
Эта функция сравнивает два объекта и проверяет, содержит ли первый объект эквивалентные значения свойств со вторым. Она делает это на основе предоставленной функции.
Для использования этой функции следуйте этим шагам:
- Используйте
Object.keys()
, чтобы получить все ключи второго объекта.
- Используйте
Array.prototype.every()
, Object.prototype.hasOwnProperty()
и предоставленную функцию, чтобы определить, существуют ли все ключи в первом объекте и имеют ли они эквивалентные значения.
- Если функция не предоставлена, значения будут сравниваться с использованием оператора равенства.
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
В этом примере проверяется, имеют ли два объекта эквивалентные значения для свойства greeting
. Используется функция isGreeting
, чтобы убедиться, что оба значения являются допустимыми приветствиями.