Сопоставитель шаблонов в JavaScript

Feb 25 2023
В JavaScript средство сопоставления шаблонов — это шаблон проектирования, используемый для сопоставления одного набора объектов с другим набором объектов с помощью функции сопоставления. Цель этого шаблона — упростить код и сделать его более модульным, отделив логику сопоставления объектов от остального приложения.

В JavaScript средство сопоставления шаблонов — это шаблон проектирования, используемый для сопоставления одного набора объектов с другим набором объектов с помощью функции сопоставления. Цель этого шаблона — упростить код и сделать его более модульным, отделив логику сопоставления объектов от остального приложения.

Преобразователь шаблонов обычно принимает два массива или объекта в качестве входных данных: исходный объект или массив и объект или массив сопоставления, который указывает, как исходные объекты должны быть сопоставлены с целевыми объектами. Объект сопоставления обычно состоит из пар ключ-значение, где ключи представляют имена свойств или полей в исходном объекте, а значения представляют имена свойств или полей в целевом объекте.

Преобразователь шаблонов использует объект сопоставления для преобразования исходных объектов в целевые объекты путем итерации по свойствам исходного объекта и сопоставления их с соответствующими свойствами в целевом объекте. Полученные целевые объекты затем могут использоваться остальной частью приложения.

Сопоставитель шаблонов может быть реализован различными способами, в том числе с использованием встроенных функций JavaScript, таких как map(), reduce() и forEach(), или с использованием внешних библиотек, таких как Lodash или Underscore.js.

Вот пример того, как сопоставитель шаблонов можно использовать в JavaScript:

Допустим, у нас есть массив исходных объектов, представляющих книги.

const books = [
  { title: 'The Great Gatsby', author: 'F. Scott Fitzgerald', year: 1925 },
  { title: 'To Kill a Mockingbird', author: 'Harper Lee', year: 1960 },
  { title: '1984', author: 'George Orwell', year: 1949 }
];

const mapping = {
  title: 'title',
  author: 'author',
  published: 'year'
};

const targetObjects = books.map(book => ({
  title: book[mapping.title],
  author: book[mapping.author],
  published: book[mapping.published]
}));

[
  { title: 'The Great Gatsby', author: 'F. Scott Fitzgerald', published: 1925 },
  { title: 'To Kill a Mockingbird', author: 'Harper Lee', published: 1960 },
  { title: '1984', author: 'George Orwell', published: 1949 }
]