Введение
В этом практическом занятии мы изучим функцию matchesWith в JavaScript. Целью этого практического занятия является изучение способа сравнения двух объектов и определения, содержат ли они эквивалентные значения свойств на основе предоставленной функции. Для выполнения этой задачи мы будем использовать Object.keys(), Array.prototype.every() и Object.prototype.hasOwnProperty().
Сопоставление свойств объектов с функцией
Для начала практики программирования откройте Терминал/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, чтобы убедиться, что оба значения являются допустимыми приветствиями.
Резюме
Поздравляем! Вы завершили практическое занятие по сопоставлению свойств объектов на основе функции. Вы можете выполнить больше практических заданий в LabEx, чтобы улучшить свои навыки.