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
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Creare gruppi di client per Event Grid MQTT
Utilizzare la libreria Benchmark.NET per misurare le performance
Cache policy su route groups di Minimal API in ASP.NET Core 7
Hosting di componenti WebAssembly in un'applicazione Blazor static
Miglioramenti nelle performance di Angular 16
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Utilizzare gli snapshot con Azure File shares
Miglioramenti nell'accessibilità con Angular CDK
Effettuare il pull di git LFS in un workflow di GitHub