Nello script #252 abbiamo visto come sia semplice estendere una classe JavaScript esistente utilizzando TypeScript. In quello script abbiamo aggiunto alla classe Array il metodo Distinct, mentre in questo script aggiungeremo il metodo SelectMany molto utilizzato nelle applicazioni .NET quando si manipolano gli array. Vediamo prima il codice.
declare global { interface Array<T> { selectMany<K>(callbackfn: (value: T, index: number, array: T[]) => K[], thisArg?: any): K[]; } } Array.prototype.selectMany = function (fn) { return this.map(fn).reduce(function (x, y) { return x.concat(y); }, []); };
La prima parte del codice rende il metodo SelectMany visibile a TypeScript, la seconda parte definisce il metodo nel prototype della classe Array. Il codice del metodo selectMany accetta in input una funzione che specifica quale proprietà dell'array originale vogliamo appiattire. Questa funzione viene passata al metodo map che torna un array con gli oggetti desiderati. Succesivamente il metodo reduce appiattisce l'array concatenando tra loro gli oggetti.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Reactive form tipizzati con FormBuilder in Angular
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Creazione di componenti personalizzati in React.js con Tailwind CSS
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Generare velocemente pagine CRUD in Blazor con QuickGrid
Paginare i risultati con QuickGrid in Blazor
Miglioramenti nelle performance di Angular 16
Utilizzare Copilot con Azure Cosmos DB
Usare il colore CSS per migliorare lo stile della pagina
Usare una container image come runner di GitHub Actions
Creare form tipizzati con Angular