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
Usare lo spread operator con i collection initializer in C#
Usare un KeyedService di default in ASP.NET Core 8
Utilizzare Azure AI Studio per testare i modelli AI
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Utilizzare i primary constructor di C# per inizializzare le proprietà
Evitare il flickering dei componenti nel prerender di Blazor 8
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare politiche di resiliency con Azure Container App
Routing statico e PreRendering in una Blazor Web App
Ottenere un token di accesso per una GitHub App
Migliorare l'organizzazione delle risorse con Azure Policy