Array JavaScript
- Pagina precedente Proprietà numeriche JS
- Pagina successiva Metodi di array JS
JavaScript 数组用于在单一变量中存储多个值。
什么是数组?
数组是一种特殊的变量,它能够一次存放一个以上的值。
如果您有一个项目清单(例如,汽车品牌列表),在单个变量中存储汽车品牌应该是这样的:
var car1 = "Saab"; var car2 = "Volvo"; var car3 = "BMW";
不过,假如您希望遍历所有汽车并找到一个特定的值?假如不是三个汽车品牌而是三百个呢?
解决方法就是数组!
数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值。
创建数组
使用数组文本是创建 JavaScript 数组最简单的方法。
语法:
var array-name = [item1, item2, ...];
Esempio
var cars = ["Saab", "Volvo", "BMW"];
空格和折行并不重要。声明可横跨多行:
Esempio
var cars = [ "Saab", "Volvo", "BMW"
Non scrivere una virgola dopo l'ultimo elemento (ad esempio, "BMW",).
Potrebbe esserci problemi di compatibilità tra browser.
Utilizzando la parola chiave JavaScript new
Esempio seguente creerà anche un array e lo assegnerà:
Esempio
var cars = new Array("Saab", "Volvo", "BMW");
Gli esempi sopra riportati sono completamente identici. Non è necessario utilizzare new Array()
.
Per motivi di chiarezza, leggibilità e velocità di esecuzione, si prega di utilizzare il primo metodo (metodo testuale dell'array).
accediamo agli elementi dell'array
Attraverso il riferimentoNumero di indice (sottoscrittura)per riferirsi a un elemento dell'array.
Questa istruzione accede al valore del primo elemento di cars:
var name = cars[0];
Questa istruzione modifica il primo elemento di cars:
cars[0] = "Opel";
Esempio
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars[0];
[0] è l'elemento primo dell'array. [1] è il secondo. Gli indici dell'array iniziano da 0.
Modifica dell'elemento dell'array
Questa istruzione modifica il valore del primo elemento di cars:
cars[0] = "Opel";
Esempio
var cars = ["Saab", "Volvo", "BMW"]; cars[0] = "Opel"; document.getElementById("demo").innerHTML = cars[0];
Accedere all'intero array
Tramite JavaScript, è possibile accedere all'intero array tramite il nome dell'array:
Esempio
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
Array è oggetto
Un array è un tipo speciale di oggetto. In JavaScript, si utilizza typeof
L'operatore restituirà "oggetto".
Ma, è meglio descrivere gli array JavaScript come array.
L'uso dell'arraynumeriper accedere ai "elementi" del suo. Nel caso presente,person[0]
Restituisce Bill:
Array:
var person = ["Bill", "Gates", 62];
Gli oggetti utilizzanoNomeper accedere ai "membri" del suo. Nel caso presente,person.firstName
Restituisce Bill:
Oggetto:
var person = {firstName:"Bill", lastName:"Gates", age:19};
Gli elementi dell'array possono essere oggetti
Le variabili JavaScript possono essere oggetti. Gli array sono un tipo speciale di oggetto.
Per questo, puoi memorizzare vari tipi di variabili nello stesso array.
Puoi salvare oggetti in un array. Puoi salvare funzioni in un array. Puoi anche salvare un array in un array:
myArray[0] = Date.now; myArray[1] = myFunction; myArray[2] = myCars;
Proprietà e metodi degli array
La vera forza degli array JavaScript è nascosta nelle sue proprietà e metodi:
Esempio
var x = cars.length; // L'attributo length restituisce il numero di elementi var y = cars.sort(); // Il metodo sort() ordina l'array
Studieremo i metodi degli array nel capitolo successivo.
Attributo length
length
L'attributo restituisce la lunghezza dell'array (il numero di elementi dell'array).
Esempio
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // La lunghezza di fruits è 4
length
L'attributo è sempre maggiore dell'indice massimo dell'array (indice inferiore).
Accedere al primo elemento dell'array
Esempio
fruits = ["Banana", "Orange", "Apple", "Mango"]; var first = fruits[0];
Accedere all'ultimo elemento dell'array
Esempio
fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
Iterare gli elementi dell'array
Il metodo più sicuro per iterare un array è utilizzare "for
"Ciclo:",
Esempio
var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fLen = fruits.length; text = "<ul>"; for (i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; }
Puoi anche utilizzare Array.foreach()
Funzione:
Esempio
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
Aggiungi elementi all'array
Il miglior metodo per aggiungere elementi all'array è utilizzare push()
Metodo:
Esempio
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // Aggiungi un nuovo elemento (Lemon) a fruits
Puoi anche utilizzare length
Proprietà per aggiungere nuovi elementi all'array:
Esempio
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // Aggiungi un nuovo elemento (Lemon) a fruits
Attenzione!
Aggiungere l'elemento con l'indice massimo può creare "buchi" non definiti nell'array:
Esempio
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[6] = "Lemon"; // Aggiungi un nuovo elemento (Lemon) a fruits
Array associativo
Molti elementi di programmazione supportano gli array con indicizzazione nome.
Gli array con indicizzazione nome sono detti array associativi (o hash).
JavaScript Non supportaarray con indicizzazione nome.
In JavaScript, gli array possono utilizzare soloindici numerici.
Esempio
var person = []; person[0] = "Bill"; person[1] = "Gates"; person[2] = 62; var x = person.length; // person.length restituisce 3 var y = person[0]; // person[0] restituisce "Bill"
Attenzione!
Se utilizzate un'indicizzazione nome, JavaScript definisce l'array come un oggetto standard.
Dopo di che, tutti i metodi e le proprietà degli array produrranno risultati non corretti.
Esempio:
var person = []; person["firstName"] = "Bill"; person["lastName"] = "Gates"; person["age"] = 62; var x = person.length; // person.length restituirà 0 var y = person[0]; // person[0] restituirà undefined
La differenza tra array e oggetti
In JavaScript,Arrayusareindici numerici.
In JavaScript,oggettousareIndici nominativi.
Gli array sono un tipo speciale di oggetto che hanno indici numerici.
Quando usare array e quando usare oggetti?
- JavaScript non supporta gli array associativi
- Se si desidera che il nome degli elementi siastringa (testo)doveva essere usatooggetto.
- Se si desidera che il nome degli elementi sianumeridoveva essere usatoArray.
Evita new Array()
Non c'è bisogno di usare il costruttore di array integrato di JavaScript new Array()
.
Usa []
Invece di questo!
Le seguenti due espressioni diverse creano un nuovo array vuoto chiamato points:
var points = new Array(); // Cattivo var points = []; // Buono
Le seguenti due espressioni diverse creano un nuovo array contenente sei numeri:
var points = new Array(40, 100, 1, 5, 25, 10); // Cattivo var points = [40, 100, 1, 5, 25, 10]; // Buono
new
Le parole chiave possono complicare il codice. Possono anche produrre risultati imprevisti:
var points = new Array(40, 100); // Crea un array contenente due elementi (40 e 100)
Cosa succede se elimino uno di questi elementi?
var points = new Array(40); // Crea un array contenente 40 elementi non definiti!!!
Come riconoscere un array
Un problema comune è: come posso sapere se una variabile è un array?
Il problema risiede nell'operatore JavaScript typeof
Restituisce "oggetto
":
var fruits = ["Banana", "Orange", "Apple", "Mango"]; typeof fruits; // Restituisce "oggetto"
L'operatore typeof restituisce "oggetto", poiché l'array JavaScript è un oggetto.
Soluzione 1:
Per risolvere questo problema, ECMAScript 5 ha definito un nuovo metodo Array.isArray()
:
Array.isArray(fruits); // Restituisce true
Il problema con questa soluzione è ECMAScript 5 Non supporta i browser obsoleti.
Soluzione 2:
Crea il tuo isArray()
La funzione risolve questo problema:
function isArray(x) { return x.constructor.toString().indexOf("Array") > -1; }
Se il parametro è un array, la funzione sopra restituirà sempre true.
O una spiegazione più precisa è: se l'oggetto原型 contiene la parola "Array", allora restituisce true.
Soluzione 3:
Se l'oggetto è stato creato dal costruttore specificato, allora instanceof Operatore che restituisce true:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits instanceof Array // Restituisce true
- Pagina precedente Proprietà numeriche JS
- Pagina successiva Metodi di array JS