Lavorare con gli array in JavaScript è un'operazione che spesso si può riassumere con la frase "è una faticaccia". Il motivo spesso è da ricercarsi nella mancanza di funzionalità per la manipolazione degli stessi all'interno di ES (EcmaScript). A questo proposito esistono varie librerie come Lodash e Underscore.js che implementano le principali e più comuni operazioni. Tuttavia, con l'evoluzione del linguaggio molte di queste operazioni possono essere svolte senza nessun aiuto esterno, vediamone qualche esempio.
Per creare un array di N elementi spesso si ricorre all'utilizzo di un ciclo che consente di inserire una data quantità di elementi. Per raggiungere lo stesso scopo possiamo utilizzare i metodi fill e from
// Creo un array con 3 '0' // [0,0,0] Array(3).fill(0) Array.from(Array(3),()=>0) // utilizzo l'index per creare un array con numeri crescenti // [1,2,3] Array.from(Array(3),(_,index)=>index) // array con numeri casuali Array.from(Array(3),Math.random)
Prendendo come riferimento l'ultimo array, se volessimo avere il penultimo elemento dovremmo usare la lunghezza dell'array e da questa togliere 2. Usando il metodo at, possiamo arrivare allo stesso risultato utilizzando un indice negativo.
console.log(array[array.length -2]) console.log(array.at(-2))
Nel momento in cui poi andiamo a modificare un elemento della lista, inserendo in questo caso un numero con molte cifre, possiamo utilizzare il carattere _ come separatore visivo, che a livello di codice non è interpretato, rendendo lo stesso molto più leggibile.
array[2]= 10000000; array[2]= 10_000_000;
Durante la creazione di un array con numeri casuali può capitare di trovare dei doppioni. Per eliminarli si potrebbe creare un doppio loop sull'array: per ogni elemento scorre la lista alla ricerca di uno simile, seppur funzionale possiamo far uso dell'oggetto Set.
let array = [1, 2, 1]; let array1 = new Set(array); // [1,2]
A volte abbiamo la necessità di convertire un array in un oggetto o viceversa. Le operazioni richiedono l'utilizzo di un ciclo che iterando su ogni elemento o proprietà, converte la tipologia di oggetto. Entrambe le operazioni possono essere scritte in una sola riga.
// da array ad oggetto let arr = [1, 2, 3]; let arrObject = {}; for (let i = 0; i < arr.length; ++i) { arrObject<i> = arr<i>; } let arrObject = {...arr}; // {0:1,1:2,2:3} // da oggetto ad array let number = { one: 1, two: 2, }; let keys = []; for (let numbers in numbers) { if (number.hasOwnProperty(number)) { keys.push(number); } } // [ 'one', 'two' ] let key = Object.keys(number); // key = [ 'one', 'two' ] let value = Object.values(number); // value = [ 1, 2 ] let entry = Object.entries(number); // entry = [['one' : 1], ['two' : 2]]
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Recuperare App Service cancellati su Azure
Creare una libreria CSS universale: Cards
Supportare la sessione affinity di Azure App Service con Application Gateway
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Gestire codice JavaScript con code splitting e lazy loading
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Gestire gli accessi con Token su Azure Container Registry
Managed deployment strategy in Azure DevOps
Il nuovo controllo Range di Blazor 9
Esporre un server MCP con Azure API Management
Utilizzare DeepSeek R1 con Azure AI
Gestire progetti .NET + React in .NET Aspire
I più letti di oggi
- Configurare OpenAI in .NET Aspire
- Interagire con Azure DevOps tramite MCP Server
- .NET Conference Italia 2025 - Milano
- Velocity arriva alla CTP3
- SQL Server 2000 Desktop Engine (MSDE) Service Pack 3
- Microsoft Security Bulletin MS03-048
- Tutorial Windows Presentation Foundation
- microsoft annuncia le versioni di #win8: sono tre e windows on arm diventa windows rt. dettagli su https://aspit.co/8e
- Nuove feature per #azure a #pdc10:extra small instance,remote desktop,smooth streaming,full IIS,virtual network http://u.aspitalia.com/n3
- Le novità di #blazor in .NET 6.0 https://aspit.co/b85 di @morwalpiz #aspnetcore