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
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Utilizzare l nesting nativo dei CSS
Migliorare la sicurezza dei prompt con Azure AI Studio
Creare una libreria CSS universale: Immagini
Ottimizzare le performance usando Span<T> e il metodo Split
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Utilizzare QuickGrid di Blazor con Entity Framework
Sfruttare al massimo i topic space di Event Grid MQTT
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Ottimizzare le pull con Artifact Cache di Azure Container Registry