Arrays em JavaScript são usados para armazenar vários valores em uma única variável.

Guia do artigo:

Exemplo:


var carros = ["Saab", "Volvo", "BMW"]

O que é um Array?

Um Array é uma variável especial, que pode conter mais de um valor por vez.

Se você tem uma lista de itens (uma lista de nomes de carros, por exemplo), armazenar os carros em variáveis individuais pode ser assim:


var carro1 = "Saab";
var carro2 = "Volvo";
var carro3 = "BMW";

No entanto, e se você quiser percorrer os carros e encontrar um específico? E se você não tivesse 3 carros, mas 300?

A solução é um Array!

Um Array pode armazenar muitos valores com um único nome, e você pode acessar os valores consultando um número de índice.

Criando um Array

Usar um Array literalmente é a maneira mais fácil de criar um Array de JavaScript. Código:


var array_name = [item1, item2, ...]

Exemplo:


var carros = [ "Saab", "Volvo", "BMW" ]

Espaços e quebras de linha não são importantes. Uma declaração pode abranger várias linhas:


var carros = [
    "Saab",
    "Volvo",
    "BMW"
];

Usando novos Arrays no JavaScript

O exemplo a seguir também cria um Array e atribui valores a ela:


var carros = new Array("Saab", "Volvo", "BMW")

Os dois exemplos acima fazem exatamente o mesmo. Não é necessário usar o novo Array(). Por simplicidade, legibilidade e velocidade de execução, use o primeiro (método literal do Array).

Acesse os elementos de um Array

Você se refere a um elemento do Array referente ao número de índice. Esta declaração acessa o valor do primeiro elemento em carros:


var name = carros[0];

Esta declaração modifica o primeiro elemento em carros:

carros[0] = "Opel";

Examplo


var carros = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = carros[0];

[0] é o primeiro elemento em um Array. [1] é o segundo. Os índices do Array começam com 0.


Acessando um Array completo

Com o JavaScript, é possível acessar a matriz completa consultando o nome do Array:


var carros = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = carros;

Arrays são objetos

Arrays são um tipo especial de objetos. O tipo de operador em JavaScript retorna "objeto" para arrays. Mas, os arrays de JavaScript são melhor descritos como arrays.

Arrays usam números para acessar seus "elementos". Neste exemplo, a pessoa[0] retorna Carlos:


var pessoa = [ "Carlos", "Silva", 46 ];

Os objetos usam nomes para acessar seus "membros". Neste exemplo, pessoa.primeiroNome retorna Carlos:


var pessoa = {primeiroNome:"Carlos", lastName:"Silva", age:46};

Elementos do Array podem ser objetos

OAs variáveis de JavaScript podem ser objetos. Arrays são tipos especiais de objetos. Por isso, você pode ter variáveis de diferentes tipos no mesmo Array.

OVocê pode ter objetos em um Array. Você pode ter funções em um Array. Você pode ter Arrays em um Array:


myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = mycarros;

Proriedade e Métodos do Array

A força real dos Arrays de JavaScript são as propriedades e métodos do Array incorporada:


var x = carros.length;   // A propriedade length retorna o número de elementos
var y = carros.sort();   // O método sort() classifica os arrays

Os métodos do Array são abordados nos próximos capítulos.

A Propriedade length

A propriedade length de um Array retorna o comprimento de um Array (o número de elementos do Array).


var frutas = ["Banana", "Laranja", "Maça", "Manga"];
frutas.length;                       // o length de frutas é 4

A propriedade length é sempre mais do que o índice do Array mais alto.

Iterando sobre os itens de um array

A melhor maneira de percorrer um Array é usando um loop "for":


var frutas, text, fLen, i;

frutas = ["Banana", "Laranja", "Maça", "Manga"];
fLen = frutas.length;
text = "<ul>";
for (i = 0; i < fLen; i++) {
    text += "<li>" + frutas[i] + "</li>";
}

Adicionando elementos a um Array

A maneira mais fácil de adicionar um novo elemento a um Array é usar o método push:


var frutas = ["Banana", "Laranja", "Maça", "Manga"];
frutas.push("Limão");  // acrescenta o novo elemento (limão) às frutas

Novos elementos também podem ser adicionado a um array usando a propriedade length:


var frutas = ["Banana", "Laranja", "Maça", "Manga"];
frutas[frutas.length] = "Limão";     // Adiciona o novo elemento (Limão) a frutas

ATENÇÃO!
A adição de elementos com índices altos pode criar "buracos" indefinidos em um array:

Veja:


var frutas = ["Banana", "Laranja", "Maça", "Manga"];
frutas[6] = "Limão";                 // Adiciona o novo elemento (Limão) a frutas

Arrays associativos

Muitas linguagens de programação suportam arrays com índices nomeados. Arrays com índices nomeados são chamados arrays associativas (ou hashes). O JavaScript não suporta arrays com índices nomeados.

Em JavaScript, os arrays sempre usam índices numerados.


var pessoa = [];
pessoa[0] = "Carlos";
pessoa[1] = "Silva";
pessoa[2] = 46;
var x = pessoa.length;         // pessoa.length will return 3
var y = pessoa[0];             // pessoa[0] will return "Carlos"

ATENÇÃO!
Se você usa índices nomeados, o JavaScript redefinirá a array para um objeto padrão. Depois disso, alguns métodos e propriedades do array produzirão resultados incorretos.

Veja:


var pessoa = [];
pessoa["Nome"] = "Carlos";
pessoa["Sobrenome"] = "Silva";
pessoa["age"] = 46;
var x = pessoa.length;         // pessoa.length irá retonar 0
var y = pessoa[0];             // pessoa[0] retornará indefinido

A Diferença entre Arrays e Objetos

Em JavaScript, os arrays usam índices numerados.

Em JavaScript, os objetos usam índices nomeados.

Arrays são um tipo especial de objetos, com índices numerados.

Quando usar Arrays. Quando usar Objetos.

  • O JavaScript não suporta arrays associativos.
  • Você deve usar objetos quando quiser que os nomes dos elementos sejam strings(texto).
  • Você deve usar arrays quando quiser que os nomes dos elementos sejam números.

Como evitar um novo array()

Não há necessidade de usar o construtor de arrays do JavaScript em um novo Array(). Use [] em vez disso.

Essas duas declarações diferentes criam um novo Array vazio chamado points:


var points = new Array();         // Errado
var points = [];                  // OK 

Estas duas declarações diferentes criam um novo Array com 6 números:


var points = new Array(40, 100, 1, 5, 25, 10); // Errado
var points = [40, 100, 1, 5, 25, 10];          // OK

O new só complica o código. Também pode produzir alguns resultados inesperados:


var points = new Array(40, 100);  // Cria um Array com dois elementos (40 e 100)

E se eu remover um dos elementos?


var points = new Array(40);       // Cria um Array com 40 elementos indefinidos!

Como reconhecer um Array

Uma pergunta comum é: como eu sei se uma variável é um Array?

O problema é que o operador JavaScript typeof retorna o "objeto":


var fruits = ["Banana", "Orange", "Apple", "Mango"];

typeof fruits;             // retorna o object

O operador tipoof retorna o objeto porque um Array no JavaScript é um objeto.

Solucões para reconhecer um Array

Para resolver este problema, o ECMAScript 5 define um novo método Array.isArray():


Array.isArray(fruits);     // retorna true

Para resolver este problema, você pode criar sua própria função isArray():


function isArray(x) {
    return x.constructor.toString().indexOf("Array") > -1;
}

A função acima sempre retorna true se o argumento for um Array. Ou mais precisamente: ele retorna verdadeiro se o protótipo do objeto contiver a palavra "Array".

O instanceof do operador retorna true se um objeto for criado por um determinado construtor:


var fruits = ["Banana", "Laranja", "Maça", "Manga"];

fruits instanceof Array     // retorna true

Confira também