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
Effettuare il refresh dei dati di una QuickGrid di Blazor
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Evitare il flickering dei componenti nel prerender di Blazor 8
Criptare la comunicazione con mTLS in Azure Container Apps
Miglioramenti agli screen reader e al contrasto in Angular
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Code scanning e advanced security con Azure DevOps
Eseguire le GitHub Actions offline
Generare token per autenicarsi sulle API di GitHub
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Gestire i dati con Azure Cosmos DB Data Explorer
I più letti di oggi
- Organizzare il codice JavaScript utilizzando i moduli
- Utilizzare Azure Cosmos DB con i vettori
- Comunicazione bidirezionale con WebSockets e HTML5
- Recuperare i file utilizzati di recente in un'Universal App
- Gestione avanzata delle Progress Bar con Bootstrap
- Conoscere quando una periferica viene collegata nelle Universal App
- Disponibile Internet Explorer 10 Platform Preview 2 (IE10 PP2): ancora più supporto ad HTML5
- I nuovi tag figure e figcaption in HTML5
- Utilizzare il microfono nelle applicazioni Windows Phone