Qual é a diferença entre "{}" e "[]" ao declarar um array JavaScript?

Qual é a diferença entre "{}" e "[]" ao declarar um array JavaScript? Normalmente eu declaro como

var a=[];
O que significa declarar a matriz como var a={}

Author: Venkat, 2015-11-04

7 answers

Ninguém parece estar a explicar a diferença entre uma matriz e um objecto.

[] está a declarar uma matriz.

{} está a declarar um objecto.

Um array tem todas as características de um objeto com características adicionais (você pode pensar em um array como uma sub-classe de um objeto) onde métodos e capacidades adicionais são adicionados na sub-classe Array. Na verdade, typeof [] === "object" para mostrar ainda mais que um array é um objeto.

As Características adicionais consiste em uma propriedade mágica .length que mantém o controle do número de itens na matriz e uma série de métodos para operar na matriz, tais como .push(), .pop(), .slice(), .splice(), etc... Você pode ver uma lista de métodos de array aqui.

Um objecto dá-Lhe a capacidade de associar um nome de propriedade com um valor como em:

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

As propriedades do objecto podem ser acedidas através da sintaxe x.foo ou através da sintaxe array-like x["foo"]. A vantagem desta última sintaxe é que você pode usar uma variável como o nome da propriedade como x[myvar] e usando a última sintaxe, você pode usar os nomes da propriedade que contêm caracteres que Javascript não permite na sintaxe x.foo.

Um nome de propriedade pode ser qualquer valor de texto.


Um array é um objecto por isso tem todas as mesmas capacidades de um objecto mais um monte de funcionalidades adicionais para gerir um ordenado, sequencial lista de índices numerados a partir de 0 e até alguns comprimento. Arrays são tipicamente usados para uma lista ordenada de itens que são acessados por índice numérico. E, como o array é ordenado, existem muitas características úteis para gerenciar a ordem da lista .sort() ou para adicionar ou remover coisas da lista.

 33
Author: jfriend00, 2015-11-04 06:28:56

Quando declarar

var a=[];
Está a declarar uma matriz vazia.

Mas quando estás a declarar

var a={};
Está a declarar um objecto .

Embora o Array também seja objecto em Javascript, mas é um conjunto de valores numéricos. Que têm toda a funcionalidade do objeto, mas adicionou alguns poucos métodos de Array como Push,Splice, comprimento e assim por diante.

Por isso, se quiser alguns valores onde precisa de usar as chaves numéricas use a lista. senão, usa o objecto. você pode criar um objecto tipo:

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

E pode aceder a valores como

console.log(a.name);
 5
Author: Roli Agrawal, 2015-11-04 06:32:18
var a = [];

É usado para parêntesis para uma matriz de valores simples. exemplo.

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

var a={}

Também é usado para matrizes de valores e objectos/propriedades. exemplo.

var programmer = { 'name':'special', 'url':'www.google.com'}
 3
Author: Hemina, 2016-09-13 11:25:11

Pode ser entendido assim:

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

Você também pode entender que

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

Nota:

Pode usar Arrays quando se preocupa com a ordem dos elementos(do mesmo tipo) na sua colecção, caso contrário poderá usar objectos. Em objetos a ordem não é garantida.

 2
Author: Rahul Tripathi, 2015-11-04 06:29:36
São duas coisas diferentes..

[] is declaring an Array:
dado, uma lista de elementos detidos pelo índice numérico.

{} is declaring a new object:
dado, um objecto com campos com nomes e tipo + Valor,
alguns gostam de pensar nisso como"matriz associativa". mas não há matrizes, em sua representação.

Pode ler mais @ Este artigo

 1
Author: Tomer W, 2015-11-04 06:23:27

Sintaxe de JSON

Object = {} / {members }

  • membros = par / par, Membros
  • par = cadeia de caracteres: valor

Matriz = [] | [elementos]

  • elementos = valor / valor elementos

Valor = string|number|object|array|true|false / null

 1
Author: riteshkasat, 2015-11-04 06:29:12

Em Arrays JavaScript e objetos são realmente muito semelhantes, embora no exterior eles podem parecer um pouco diferentes.

Para uma matriz:

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

Como pode ver as matrizes em JavaScript podem ser esparsas (as indicias válidas não têm de ser consecutivas) e podem conter qualquer tipo de variável! Muito conveniente.

Mas como todos sabemos que JavaScript é estranho, aqui estão algumas partes estranhas:
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!
Isto é porque tudo em JavaScript é um Object (é por isso que você também pode criar um array usando new Array()). Como resultado, cada índice em um array é transformado em uma string e então armazenado em um objeto, então um array é apenas um objeto que não permite que ninguém armazene nada com uma chave que não seja um inteiro positivo. Então, o que são os objectos?

Os objectos em JavaScript são como arrays, mas o "índice" pode ser qualquer cadeia.

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

Você pode até optar por não usar os parêntesis rectos ao trabalhar com objectos!

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

Você pode ir ainda mais longe e definir objetos assim:

var newObject = {
    a: 2,
};
newObject.a === 2; // true
 1
Author: Michael Eden, 2015-11-04 06:38:35