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
Validare form con pseudo-classi CSS user-valid e user-invalid
Creare una chat AI con Angular e React
Angular Standalone Components: applicazioni più semplici senza NgModule
How to be a DevOps engineer in the AI era
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Utilizzo del persistent state di Blazor nel prerendering
Utilizzare AbortController per cancellare operazioni asincrone in JavaScript
Gestione opzioni colonna nella Blazor QuickGrid
Modificare lo stile in una QuickGrid Blazor
Configurare OpenTelemetry per Application Insights su ASP.NET Core
Utilizzare i named query filter di Entity Framework
I più letti di oggi
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Accedere a dati esposti con WebService con Silverlight 1.0
- Utilizzare dati in formato XML in XAML


