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={}
7 answers
[]
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.
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);
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'}
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.
[]
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
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
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