Сопоставление свойств объектов на основе функции

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы изучим функцию matchesWith в JavaScript. Целью этого практического занятия является изучение способа сравнения двух объектов и определения, содержат ли они эквивалентные значения свойств на основе предоставленной функции. Для выполнения этой задачи мы будем использовать Object.keys(), Array.prototype.every() и Object.prototype.hasOwnProperty().


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") subgraph Lab Skills javascript/variables -.-> lab-28337{{"Сопоставление свойств объектов на основе функции"}} javascript/data_types -.-> lab-28337{{"Сопоставление свойств объектов на основе функции"}} javascript/arith_ops -.-> lab-28337{{"Сопоставление свойств объектов на основе функции"}} javascript/comp_ops -.-> lab-28337{{"Сопоставление свойств объектов на основе функции"}} javascript/array_methods -.-> lab-28337{{"Сопоставление свойств объектов на основе функции"}} end

Сопоставление свойств объектов с функцией

Для начала практики программирования откройте Терминал/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, чтобы улучшить свои навыки.