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
Creare una file based app con C#
Gestione delle issue type con GitHub
Definire il colore di una scrollbar HTML tramite CSS
Self-healing degli unit test con Copilot in GitHub
Utilizzare Locust con Azure Load Testing
Configurare OpenAI in .NET Aspire
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Integrare LLM alle nostre applicazioni in .NET con MCP
Raggruppare risorse in .NET Aspire
Response streaming con Blazor e .NET 10
Utilizzare Hybrid Cache in .NET 9
Ricerca delle GitHub issue tramite operatori logici
I più letti di oggi
- Microsoft Security Bulletin MS04-008
- Una chat con ASP.NET Core e WebSockets
- siete pronti a vincere fantastici premi con le vostre app #wp7? ecco il nuovo concorso #wp7appload! https://aspit.co/0n
- .@dbochicchio tra poco su sviluppare app per la #UWP #Windows10: https://aspit.co/Win10-live #aspilive
- Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
- Consumare Mobile Service nelle Universal App
- Notificare il cambiamento dell'Accent color nella Universal Windows Platform
- PWAConf 2020 - Online




