Em JavaScript, um array (ou vetor) é uma estrutura semelhante a uma lista, sem comprimento fixo, que pode guardar qualquer tipo de primitivo ou objeto, até mesmo tipos mistos.
Ele inclui a propriedade length e também vários métodos úteis para percorrer e modificar o array.
Para criar um array, adicione elementos entre colchetes [].
Para ler do array, coloque o índice entre colchetes [] depois do identificador. Os índices de um array começam em zero.
Por exemplo:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names[1];
// => Laura
Arrays também podem ser criados com a sintaxe de construtor, mas, para a maioria dos usos, recomenda-se a sintaxe de literal de array.
const names = new Array();
names.push('Jack', 'Laura', 'Paul', 'Megan');
names[1];
// => Laura
Arrays não podem usar strings como índices de elementos, é preciso usar números inteiros (number).
Definir ou acessar valores não inteiros usando a notação de colchetes (ou a notação de ponto) não define nem recupera um elemento da própria lista do array, mas define ou acessa uma variável associada à coleção de propriedades do objeto desse array.
As propriedades de objeto do array e a lista de elementos do array são coisas separadas, e as operações de percurso e modificação do array não podem ser aplicadas a essas propriedades nomeadas.
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length;
// => 4
// Properties can be set on arrays using bracket ['property'] or
// dot .property notation, and this will affect the length, as
// shown below.
names.magician = 'Elyse';
names.length;
// => 4
// The property shows up when logging the array, making it seem
// that the property is somehow incorporated in the array.
names;
// => ["Jack", "Laura", "Paul", "Megan", magician: "Elyse"]
// However, be aware. Properties added via non-numeric keys are
// NOT part of the array's internal list, and are not traversed
// or mutated when using one of the traversal or mutation
// operations.
names.forEach((name) => console.log(name));
// => Jack
// => Laura
// => Paul
// => Megan
Em JavaScript, arrays são objects comuns, e itens podem ser excluídos com a palavra-chave delete.
No entanto, isso não muda o length do array e deixa um buraco empty.
Em outras linguagens, isso é semelhante a um array esparso.
Os buracos empty são ignorados ao usar operações de percurso ou modificação.
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
delete names[1];
names;
// => ["Jack", empty, "Paul", "Megan"]
names.length;
// => 4
names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan
Se não deve haver buracos, e se o length deve refletir o número de itens que serão percorridos ou modificados, use splice em vez disso.
O método splice() altera o conteúdo de um array removendo ou substituindo elementos existentes e/ou adicionando novos elementos no lugar.1
Por exemplo:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(1, 1);
names;
// => ["Jack", "Paul", "Megan"]
names.length;
// => 3
names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan
A propriedade length de um array está ligada à lista de itens que o array guarda.
Ela pode ser modificada.
Quando o comprimento aumenta, são criados buracos empty, que não são considerados ao percorrer ou modificar o array.
Quando o comprimento diminui, os elementos no final do array são removidos.
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length = 6;
names;
// => ["Jack", "Laura", "Paul", "Megan", empty × 2]
names.length = 2;
// => ["Jack", "Laura"]
Como arrays são objects, typeof names retorna "object".
Para verificar se algo é um array, use Array.isArray:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
typeof names;
// => "object"
Array.isArray(names);
// => true
const object = {};
Array.isArray(object);
// => false
Talvez dê vontade de usar names instanceof Array, e isso pode funcionar, mas não em todas as circunstâncias.
Leia este artigo para saber mais.
Alguns dos métodos disponíveis em todo objeto Array podem ser usados para adicionar ou remover itens do array. Aqui estão alguns deles:
O método
push()adiciona um ou mais elementos ao final de um array e retorna o novo comprimento do array.2
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.push('Jill'); // => 5
names;
// => ['Jack', 'Laura', 'Paul', 'Megan', 'Jill']
O método
pop()remove o último elemento de um array e retorna esse elemento. Esse método altera o comprimento do array.3
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.pop(); // => 'Megan'
names;
// => ['Jack', 'Laura', 'Paul']
O método
shift()remove o primeiro elemento de um array e retorna esse elemento removido. Esse método altera o comprimento do array.4
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.shift(); // => 'Jack'
names;
// => ['Laura', 'Paul', 'Megan']
O método unshift() adiciona um ou mais elementos ao início de um array e retorna o novo comprimento do array.5
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.unshift('Jill'); // => 5
names;
// => ['Jill', 'Jack', 'Laura', 'Paul', 'Megan']
O método splice() altera o conteúdo de um array removendo ou substituindo elementos existentes e/ou adicionando novos elementos no lugar. Esse método retorna um array contendo os elementos excluídos.1
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(2, 1, 'Jill'); // => ['Paul']
names;
// => ['Jack', 'Laura', 'Jill', 'Megan']
splice, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice (consultado em 29 de setembro de 2021) ↩
push, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push (consultado em 29 de setembro de 2021) ↩
pop, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop (consultado em 29 de setembro de 2021) ↩
shift, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift (consultado em 29 de setembro de 2021) ↩
unshift, MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift (consultado em 29 de setembro de 2021) ↩