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
Building Custom Developer Agents
Esporre workflow come server MCP con Azure Logic Apps
Utilizzare le librerie native di .NET per comprimere uno o più file in formato ZIP
Referenziare un package NuGet in una file based app .NET
Supporto nativo a JSON in SQL Server 2025
Evitare la compressione degli artefatti in un workflow di GitHub
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Modificare lo stile in una QuickGrid Blazor
Validazione personalizzata nelle Minimal API di ASP.NET Core
Gestire il ciclo di vita di AbortController in Javascript
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Interazione con ReconnectModal in Blazor
I più letti di oggi
- Enterprise Live Migrations - Migrare da Azure DevOps a GitHub
- .NET Conference Italia 2026 - Milano
- Aggiungere servizi esterni al ciclo di vita di un'applicazione Silverlight 4.0
- Data binding con collezioni statiche in Silverlight 3.0
- le app #windows sono tornate al potere con #netcore3 @leoncini117 ci fa vedere tutte le novità con #netcore3 su #netconfit19 live ora su https://aspit.co/netconf-19 #aspilive #wpf #winforms #windev#dotnet #dotnetcore #netconference #dotnetconference


