ES6 - Arrays
L'uso di variabili per memorizzare i valori pone le seguenti limitazioni:
Le variabili sono di natura scalare. In altre parole, una dichiarazione di variabile può contenerne solo una alla volta. Ciò significa che per memorizzare n valori in un programma, saranno necessarie n dichiarazioni di variabili. Pertanto, l'uso di variabili non è fattibile quando è necessario memorizzare una raccolta di valori più ampia.
Alle variabili in un programma viene allocata la memoria in ordine casuale, rendendo così difficile recuperare / leggere i valori nell'ordine della loro dichiarazione.
JavaScript introduce il concetto di array per affrontare lo stesso problema.
Un array è una raccolta omogenea di valori. Per semplificare, un array è una raccolta di valori dello stesso tipo di dati. È un tipo definito dall'utente.
Caratteristiche di un array
Una dichiarazione di matrice alloca blocchi di memoria sequenziali.
Gli array sono statici. Ciò significa che un array una volta inizializzato non può essere ridimensionato.
Ogni blocco di memoria rappresenta un elemento dell'array.
Gli elementi della matrice sono identificati da un numero intero univoco chiamato come pedice / indice dell'elemento.
Anche gli array, come le variabili, dovrebbero essere dichiarati prima di essere utilizzati.
L'inizializzazione dell'array si riferisce al popolamento degli elementi dell'array.
I valori degli elementi della matrice possono essere aggiornati o modificati ma non possono essere eliminati.
Dichiarazione e inizializzazione di array
Per dichiarare e inizializzare un array in JavaScript, utilizzare la seguente sintassi:
var array_name; //declaration
array_name = [val1,val2,valn..] //initialization
OR
var array_name = [val1,val2…valn]
Note - La coppia di [] è chiamata dimensione dell'array.
Ad esempio, una dichiarazione come: var numlist = [2,4,6,8] creerà un array come mostrato nella figura seguente.
Accesso agli elementi dell'array
Il nome dell'array seguito dall'indice viene utilizzato per fare riferimento a un elemento dell'array.
Di seguito è riportata la sintassi per lo stesso.
array_name[subscript]
Esempio: Simple Array
var alphas;
alphas = ["1","2","3","4"]
console.log(alphas[0]);
console.log(alphas[1]);
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
1
2
Esempio: dichiarazione e inizializzazione di una singola istruzione
var nums = [1,2,3,3]
console.log(nums[0]);
console.log(nums[1]);
console.log(nums[2]);
console.log(nums[3]);
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
1
2
3
3
Oggetto array
È inoltre possibile creare un array utilizzando l'oggetto Array. Il costruttore Array può essere passato come -
Un valore numerico che rappresenta la dimensione della matrice o.
Un elenco di valori separati da virgole.
I seguenti esempi creano un array utilizzando questo metodo.
Esempio
var arr_names = new Array(4)
for(var i = 0;i<arr_names.length;i++) {
arr_names[i] = i * 2
console.log(arr_names[i])
}
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
0
2
4
6
Esempio: il costruttore di array accetta valori separati da virgole
var names = new Array("Mary","Tom","Jack","Jill")
for(var i = 0;i<names.length;i++) {
console.log(names[i])
}
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
Mary
Tom
Jack
Jill
Metodi di matrice
Di seguito è riportato l'elenco dei metodi dell'oggetto Array insieme alla loro descrizione.
Suor n | Metodo e descrizione |
---|---|
1 | concat () Restituisce un nuovo array composto da questo array unito ad altri array e / o valori |
2 | ogni() Restituisce vero se ogni elemento in questo array soddisfa la funzione di test fornita. |
3 | filtro() Crea un nuovo array con tutti gli elementi di questo array per il quale la funzione di filtro fornita restituisce true. |
4 | per ciascuno() Chiama una funzione per ogni elemento dell'array. |
5 | indice di() Restituisce il primo (minimo) indice di un elemento all'interno della matrice uguale al valore specificato o -1 se non ne viene trovato nessuno. |
6 | aderire() Unisce tutti gli elementi di un array in una stringa. |
7 | lastIndexOf () Restituisce l'ultimo (massimo) indice di un elemento all'interno della matrice uguale al valore specificato o -1 se non ne viene trovato nessuno. |
8 | carta geografica() Crea un nuovo array con i risultati della chiamata di una funzione fornita su ogni elemento in questo array. |
9 | pop() Rimuove l'ultimo elemento da un array e restituisce quell'elemento. |
10 | Spingere() Aggiunge uno o più elementi alla fine di una matrice e restituisce la nuova lunghezza della matrice. |
11 | ridurre() Applica una funzione contemporaneamente a due valori dell'array (da sinistra a destra) per ridurla a un unico valore. |
12 | reduceRight () Applica una funzione contemporaneamente a due valori dell'array (da destra a sinistra) per ridurla a un unico valore. |
13 | inversione() Inverte l'ordine degli elementi di un array: il primo diventa l'ultimo e l'ultimo diventa il primo. |
14 | cambio() Rimuove il primo elemento da un array e restituisce la sezione dell'elemento. |
15 | fetta() Estrae una sezione di un array e restituisce un nuovo array. |
16 | alcuni() Restituisce vero se almeno un elemento in questo array soddisfa la funzione di test fornita. |
17 | toSource() Rappresenta il codice sorgente di un oggetto. |
18 | ordinare() Ordina gli elementi di un array. |
19 | giunzione () Aggiunge e / o rimuove elementi da un array. |
20 | accordare() Restituisce una stringa che rappresenta l'array e i suoi elementi. |
21 | unshift () Aggiunge uno o più elementi all'inizio di un array e restituisce la nuova lunghezza dell'array. |
ES6 - Metodi array
Di seguito sono riportati alcuni nuovi metodi di array introdotti in ES6.
Array.prototype.find
findti permette di iterare attraverso un array e recuperare il primo elemento che fa sì che la funzione di callback data restituisca true. Una volta trovato un elemento, la funzione ritorna immediatamente. È un modo efficiente per ottenere solo il primo elemento che corrisponde a una determinata condizione.
Example
var numbers = [1, 2, 3];
var oddNumber = numbers.find((x) => x % 2 == 1);
console.log(oddNumber); // 1
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
1
Note - L'ES5 filter() e l'ES6 find()non sono sinonimi. Filter restituisce sempre un array di corrispondenze (e restituirà più corrispondenze), find restituisce sempre l'elemento effettivo.
Array.prototype.findIndex
findIndex si comporta in modo simile a find, ma invece di restituire l'elemento corrispondente, restituisce l'indice di quell'elemento.
var numbers = [1, 2, 3];
var oddNumber = numbers.findIndex((x) => x % 2 == 1);
console.log(oddNumber); // 0
L'esempio precedente restituirà l'indice del valore 1 (0) come output.
Array.prototype.entries
entriesè una funzione che restituisce un Array Iterator che può essere utilizzato per scorrere le chiavi e i valori dell'array. Le voci restituiranno un array di array, dove ogni array figlio è un array di [index, value].
var numbers = [1, 2, 3];
var val = numbers.entries();
console.log(val.next().value);
console.log(val.next().value);
console.log(val.next().value);
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
[0,1]
[1.2]
[2,3]
In alternativa, possiamo anche utilizzare l'operatore spread per recuperare un array di voci in una volta sola.
var numbers = [1, 2, 3];
var val= numbers.entries();
console.log([...val]);
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
[[0,1],[1,2],[2,3]]
Array.from
Array.from()consente la creazione di un nuovo array da un oggetto simile ad array. La funzionalità di base di Array.from () consiste nel convertire due tipi di valori in Array:
Valori simili a matrici.
Valori iterabili come Set e Map.
Example
"use strict"
for (let i of Array.from('hello')) {
console.log(i)
}
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
h
e
l
l
o
Array.prototype.keys ()
Questa funzione restituisce gli indici dell'array.
Example
console.log(Array.from(['a', 'b'].keys()))
Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
[ 0, 1 ]
Array Traversal utilizzando for ... in loop
Si può usare il ciclo for ... in per attraversare un array.
"use strict"
var nums = [1001,1002,1003,1004]
for(let j in nums) {
console.log(nums[j])
}
Il ciclo esegue un attraversamento di array basato su indice. Il seguente output viene visualizzato in caso di corretta esecuzione del codice precedente.
1001
1002
1003
1004
Array in JavaScript
JavaScript supporta i seguenti concetti sugli array:
Suor n | Concetto e descrizione |
---|---|
1 | Array multidimensionali JavaScript supporta array multidimensionali. La forma più semplice dell'array multidimensionale è l'array bidimensionale |
2 | Passaggio di array a funzioni È possibile passare alla funzione un puntatore a un array specificando il nome dell'array senza un indice. |
3 | Restituisce array dalle funzioni Consente a una funzione di restituire un array. |
De-strutturazione di array
Destructuringsi riferisce all'estrazione di singoli valori da un array o da un oggetto in variabili distinte. Si consideri uno scenario in cui i valori di un array devono essere assegnati a singole variabili. Il modo tradizionale di farlo è indicato di seguito:
var a= array1[0]
var b= array1[1]
var c= array1[2]
La destrutturazione aiuta a ottenere lo stesso risultato in modo conciso.
Sintassi
//destructuring an array
let [variable1,variable2]=[item1,item2]
//destructuring an object
let {property1,property2} = {property1:value1,property2:value2}
Esempio
<script>
let names = ['Mohtashim','Kannan','Kiran']
let [n1,n2,n3] = names;
console.log(n1)
console.log(n2)
console.log(n3);
//rest operator with array destructuring
let locations=['Mumbai','Hyderabad','Chennai']
let [l1,...otherValues] =locations
console.log(l1)
console.log(otherValues)
//variables already declared
let name1,name2;
[name1,name2] =names
console.log(name1)
console.log(name2)
//swapping
let first=10,second=20;
[second,first] = [first,second]
console.log("second is ",second) //10
console.log("first is ",first) //20
</script>
L'output del codice sopra sarà come mostrato di seguito -
Mohtashim
Kannan
Kiran
Mumbai
["Hyderabad", "Chennai"]
Mohtashim
Kannan
second is 10
first is 20