Pattern Mapper in JavaScript

Feb 25 2023
In JavaScript, il pattern mapper è un modello di progettazione utilizzato per mappare un insieme di oggetti su un altro insieme di oggetti utilizzando una funzione di mappatura. Lo scopo di questo modello è semplificare il codice e renderlo più modulare, separando la logica di mappatura degli oggetti dal resto dell'applicazione.

In JavaScript, il pattern mapper è un modello di progettazione utilizzato per mappare un insieme di oggetti su un altro insieme di oggetti utilizzando una funzione di mappatura. Lo scopo di questo modello è semplificare il codice e renderlo più modulare, separando la logica di mappatura degli oggetti dal resto dell'applicazione.

Il pattern mapper accetta in genere due array o oggetti come input: l'oggetto o l'array di origine e un oggetto o array di mappatura che specifica come gli oggetti di origine devono essere mappati agli oggetti di destinazione. L'oggetto di mappatura in genere è costituito da coppie chiave-valore, in cui le chiavi rappresentano i nomi di proprietà o di campo nell'oggetto di origine ei valori rappresentano i nomi di proprietà o di campo nell'oggetto di destinazione.

Il pattern mapper utilizza l'oggetto di mappatura per trasformare gli oggetti di origine in oggetti di destinazione iterando sulle proprietà dell'oggetto di origine e mappandole alle proprietà corrispondenti nell'oggetto di destinazione. Gli oggetti di destinazione risultanti possono quindi essere utilizzati dal resto dell'applicazione.

Il pattern mapper può essere implementato in vari modi, incluso l'utilizzo di funzioni JavaScript integrate come map(), reduce() e forEach() o l'utilizzo di librerie esterne come Lodash o Underscore.js.

Ecco un esempio di come il pattern mapper può essere utilizzato in JavaScript:

Supponiamo di avere un array di oggetti sorgente che rappresentano libri

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 }
]