Nelle Single Page Application spesso si ha l'esigenza di eseguire calcoli o raggruppamenti sui dati provenienti dal server. In questi casi possiamo usare la libreria LINQ.js. In questo script ci occupiamo di raggruppare una lista di persone in base al lavoro e di calcolarne la media dello stipendio.
var people = [ { name: "Mario rossi", job: "Manager", salary: 100 }, { name: "Paolo verdi", job: "Dipendente", salary: 30 }, { name: "Luca Bianchi", job: "Tuttofare", salary: 30 }, { name: "Giovanna Marchi", job: "Segretaria", salary: 20 }, { name: "Manuele Esposito", job: "Dipendente", salary: 35 }, { name: "Alessandro Rossini", job: "Tuttofare", salary: 40 } ]; var result = Enumerable.From(people) .GroupBy(function (person) { return person.job }, function (person) { return { Job: person.job, Salary: person.salary } }, function (job, grouping) { return { Job: job, TotalSalary: grouping.Average(function (item) { return item.Salary; }) } } ) .ToArray();
Nel primo step dell'esempio creiamo un oggetto Enumerable dalla lista di persone così da inizializzare LINQ.js. Sucessivamente, usiamo il metodo GroupBy per raggruppare le persone. Il primo parametro del metodo GroupBy è un metodo che definisce in base a quale proprietà raggruppare gli oggetti (job nel nostro caso). Il secondo parametro è il metodo che definisce un oggetto da ritornare per ogni gruppo. Il terzo parametro è sempre un metodo che viene richiamato per ogni gruppo creato e restituisce il risultato finale che viene assegnato alla variabile result.
Sebbene la sintassi sia inizialmente complessa, una volta presa dimestichezza con questa libreria eseguire calcoli in Javascript diventa molto semplice.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare flat e flatMap per appiattire array innestati in array
Determinare lo stato di un pod in Kubernetes
Creare alias per tipi generici e tuple in C#
Reactive form tipizzati con modellazione del FormBuilder in Angular
Workflow di continuous deployment tramite pull request label in GitHub
Installare le Web App site extension tramite una pipeline di Azure DevOps
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Utilizzare la libreria Benchmark.NET per misurare le performance
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Controllare gli accessi IP alle app con Azure Container Apps
Evitare il flickering dei componenti nel prerender di Blazor 8
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable