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
Realizzare applicazioni Windows con React Native
Gestione della dimensione del testo nella Universal Windows Platform
Compilare dinamicamente le view in ASP.NET Core 3.0
Ottimizzare costi e prestazioni con Azire SQL Database serverless
Copiare container di Azure Storage tra più account con AzCopy
Introduzione ad Azure DevOps release management
Effettuare una query su una view con Entity Framework Core 2.1
Utilizzare la funzionalità ref all'interno di un component React
Creare una libreria riutilizzabile con Angular - parte 2
Estendere la classe Array di JavaScript con TypeScript
Autorizzare una chiamata in base allo scope in ASP.NET Core
Persistere lo storage nei container di Azure App Service Linux