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
Limitare le richieste lato server con l'interactive routing di Blazor 8
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Eseguire attività con Azure Container Jobs
Eseguire una query su SQL Azure tramite un workflow di GitHub
Generare file PDF da Blazor WebAssembly con iText
Creare form tipizzati con Angular
Monitorare i server on-premises con Azure Arc
C# 12: Cosa c'è di nuovo e interessante
Miglioramenti agli screen reader e al contrasto in Angular