Nel mondo JavaScript abbiamo spesso a che fare con API. Nel migliore dei casi, queste sono scritte da noi, quindi l'output sarà codificato in modo tale da poter essere rappresentato ed elaborato facilmente una volta che il browser avrà ricevuto il dato. Tuttavia non sempre é così: la volontà, di alcuni servizi, di generalizzare il formato dell'informazione fa sì che essa possa arrivare in costrutti non congeniali al nostro stile di programmazione.
Uno di questi è una struttura che potremmo definire come un array di array di array.
const a = [1, 2, 3, [4, 5, [6, 7]]]
Per poter rimuovere gli array sottostanti, abbiamo la possibilità di utilizzare la funzione flat, al cui interno definiamo la profondità di lavoro, cioè quanti livelli di array dovrà rimuovere. Se non verrà specificato nulla, il valore di default sarà 1.
console.log(a.flat()) // [1, 2, 3, 4, 5, [6, 7]] console.log(a.flat(2)) // [1, 2, 3, 4, 5, 6, 7]
Ma non è tutto! Se oltre all'operazione eseguita da flat, volessimo anche eseguire una modifica al dato, dovremo utilizzare flatMap.
Fornendo come parametro una funzione, flatMap eseguirà un map e successivamente una flat(1). Ne consegue che, se prendiamo in esame la funzione seguente, l'operazione verrà eseguita solo sugli elementi del primo livello dell'array e non sugli elementi che verranno portati al primo livello.
console.log( a.flatMap(el=>{ return typeof(el) === "number" ? el +1 : el}) ) // [2, 3, 4, 4, 5, [6, 7]] // concatenazione flat per restituire un array unico console.log( a.flatMap(el=>{ return typeof(el) === "number" ? el +1 : el}).flat() ) // [2, 3, 4, 4, 5, 6, 7]
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Proteggere le risorse Azure con private link e private endpoints
Utilizzare WhenEach per processare i risultati di una lista di task
Triggerare una pipeline su un altro repository di Azure DevOps
.NET Aspire per applicazioni distribuite
Ricevere notifiche sui test con Azure Load Testing
Supportare la sessione affinity di Azure App Service con Application Gateway
.NET Conference Italia 2024
Eseguire query in contemporanea con EF
Gestione file Javascript in Blazor con .NET 9
Utilizzare Container Queries nominali
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Ottimizzare le performance usando Span<T> e il metodo Split
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- Tutorial LINQ
- Gestione ciclo di vita in .NET Aspire