2015-11-04 24 views
14

Qual è la differenza tra "{}" e "[]" durante la dichiarazione di un array JavaScript? Normalmente dichiarare comeQual è la differenza tra "{}" e "[]" mentre si dichiara un array JavaScript?

var a=[]; 

qual è meanning di dichiarare la matrice come var a={}

+5

'var a = {};' è un oggetto coppie-_key-VALUE_. 'var a = [];' è un array-valori memorizzati in indici sequenziali. – Tushar

+3

Non stai creando una matrice quando stai usando '{}', stai creando 'object' – Rayon

+0

Qual è la domanda esatta? Differenza tra _object_ e _array_? Cosa stai cercando di fare? Aggiungi un altro codice – Tushar

risposta

24

Nessuno sembra essere spiegare la differenza tra un array e un oggetto.

[] dichiara un array.

{} sta dichiarando un oggetto.

Un array dispone di tutte le funzionalità di un oggetto con funzionalità aggiuntive (è possibile pensare a un array come una sottoclasse di un oggetto) in cui sono aggiunti metodi e funzionalità aggiuntivi nella sottoclasse Array. Infatti, typeof [] === "object" per mostrare ulteriormente che un array è un oggetto.

Le caratteristiche aggiuntive sono costituiti da un immobile .length magia che tiene traccia del numero di elementi nella matrice e tutta una serie di metodi per operare sulla matrice, come .push(), .pop(), .slice(), .splice(), ecc ... È può vedere un elenco di metodi array here.

Un oggetto ti dà la possibilità di associare un nome di proprietà con un valore come in:

var x = {}; 
x.foo = 3; 
x["whatever"] = 10; 
console.log(x.foo);  // shows 3 
console.log(x.whatever); // shows 10 

proprietà degli oggetti è possibile accedere sia tramite la sintassi x.foo o tramite la sintassi array come x["foo"]. Il vantaggio della seconda sintassi è che puoi usare una variabile come il nome della proprietà come x[myvar] e usando la seconda sintassi, puoi usare nomi di proprietà che contengono caratteri che Javascript non permetterà nella sintassi x.foo.

Un nome di proprietà può essere qualsiasi valore di stringa.


Una matrice è un oggetto così ha tutte le stesse capacità di un oggetto, più una serie di caratteristiche aggiuntive per la gestione di un ordinata, sequenziale elenco degli indici numerati a partire da 0 e salire a qualche lunghezza. Gli array vengono in genere utilizzati per un elenco ordinato di elementi ai quali si accede mediante un indice numerico. E poiché l'array è ordinato, ci sono molte funzioni utili per gestire l'ordine dell'elenco .sort() o per aggiungere o rimuovere elementi dall'elenco.

5

Quando si dichiara

var a=[]; 

si dichiara un array vuoto.

Ma quando si dichiara

var a={}; 

si dichiara un oggetto.

Sebbene l'array sia anche oggetto in Javascript, ma è valori di coppia di tasti numerici. Che hanno tutte le funzionalità dell'oggetto ma hanno aggiunto qualche metodo di array come Push, Splice, Length e così via.

Quindi, se si desidera Alcuni valori in cui è necessario utilizzare i tasti numerici, utilizzare Array. altro uso oggetto. si può creare l'oggetto come:

var a={name:"abc",age:"14"}; 

E possibile accedere a valori come

console.log(a.name); 
+0

Grazie per la tua risposta @Mytri – Venkat

+0

Come creare istanze e accedere alla coppia valore-chiave – Venkat

+0

Un piccolo codice di esempio sarà molto utile per me @Tushar – Venkat

2

Può essere inteso in questo modo:

var a= []; //creates a new empty array 
var a= {}; //creates a new empty object 

Si può anche capire che

var a = {}; è equivalente a var a= new Object();

Nota:

È possibile utilizzare le matrici quando si è preoccupato per l'ordine degli elementi (dello stesso tipo) nella vostra collezione altro è possibile utilizzare gli oggetti. Negli oggetti l'ordine non è garantito.

+2

Quindi qual è la differenza tra un array e un oggetto? – nnnnnn

+1

@nnnnnn: - Questo può essere riferito: [Qual è la differenza tra un array e un oggetto?] (Http://stackoverflow.com/questions/874205/what-is-the-difference-between-an-array- e-un-oggetto) –

+0

@RahulTripathi nnnnnn significa che dovresti anche spiegare la differenza tra loro e quando utilizzare array vs oggetto – Tushar

1

sono due cose diverse ..

[] si dichiara una matrice:
proposta, una lista di elementi detenuti da indice numerico.

{} sta dichiarando un nuovo oggetto:
dato, un oggetto con i campi con nomi e tipo + valore,
alcuni piace pensare ad esso come "array associativo". ma non sono matrici, nella loro rappresentazione.

Si può leggere di più @This Article

1

Sintassi di JSON

oggetto = {} | {membri}

  • membri = coppia | pair, membri
  • pair = stringa: Valore

matrice = [] | [elementi]

  • elementi = valore | elementi di valore

value = stringa | numero | oggetto | allineamento | true | false | nullo

3
var a = []; 

è utilizzato per staffe per una serie di valori semplici. es.

var name=["a","b","c"] 

var a={} 

viene utilizzato anche per matrici di valori e oggetti/proprietà. es.

1

In JavaScript Array e oggetti sono in realtà molto simili, anche se all'esterno possono sembrare un po 'diversi.

Per un array:

var array = []; 
array[0] = "hello"; 
array[1] = 5498; 
array[536] = new Date(); 

Come si può vedere gli array in JavaScript possono essere sparse (indicies validi non devono essere consecutivi) e possono contenere qualsiasi tipo di variabile! È abbastanza conveniente.

Ma come tutti sappiamo JavaScript è strano, quindi ecco alcuni pezzi strani:

array["0"] === "hello"; // This is true 
array["hi"]; // undefined 
array["hi"] = "weird"; // works but does not save any data to array 
array["hi"]; // still undefined! 

Questo è perché tutto in JavaScript è un oggetto (che è il motivo per cui è anche possibile creare un array usando new Array()). Di conseguenza, ogni indice in una matrice viene trasformato in una stringa e quindi archiviato in un oggetto, quindi un array è solo un oggetto che non consente a nessuno di memorizzare nulla con una chiave che non è un numero intero positivo.

Quindi cosa sono gli oggetti?

Gli oggetti in JavaScript sono come matrici ma l'"indice" può essere qualsiasi stringa.

var object = {}; 
object[0] = "hello"; // OK 
object["hi"] = "not weird"; // OK 

Si può anche scegliere di non utilizzare le parentesi quadre quando si lavora con gli oggetti!

console.log(object.hi); // Prints 'not weird' 
object.hi = "overwriting 'not weird'"; 

Si può andare anche oltre e definire gli oggetti in questo modo:

var newObject = { 
    a: 2, 
}; 
newObject.a === 2; // true