O array, também conhecido como vetor, é um objeto de extrema importância em qualquer linguagem de programação, e no JavaScript não é diferente. Podemos pensar em um array como uma lista na qual podemos armazenar diversos itens. Cada item pode ser de qualquer tipo de dado, como uma string, número ou até mesmo um objeto.
O básico sobre arrays consiste em como declará-los, adicionar, acessar e remover itens. Vamos explorar na prática essas funcionalidades, começando pelas formas mais simples e tradicionais de declarar um array vazio: a forma literal e a criação por meio do construtor.
// forma literal
const dias = [];
// construtor
const meses = new Array();
A forma mais comumente utilizada, tanto por mim quanto pela maioria dos desenvolvedores, é a forma literal, utilizando colchetes. Podemos observar que essa abordagem acaba sendo mais prática.
Agora vamos aprender como adicionar novos itens ao nosso array. Inicialmente, podemos fazer isso de forma simples tanto utilizando a forma literal quanto por meio do construtor.
// forma literal
const dias = ['Segunda', 'Terça'];
// construtor
const meses = new Array('Fevereiro', 'Março');
No código acima, inicializamos o array com alguns valores. Mas e se precisarmos adicionar valores após a declaração, ou seja, de forma dinâmica? Existem dois métodos que nos ajudam nessa tarefa: push
e unshift
. A diferença entre eles é que o push
adiciona um novo item no final do array, enquanto o unshift
o adiciona no início. Veja o exemplo abaixo:
dias.push('Quarta');
dias.unshift('Domingo');
console.log(dias);
// ['Domingo', 'Segunda', 'Terça', 'Quarta']
Como mencionado anteriormente, “Domingo” se tornou o primeiro item do array e “Quarta” o último. Ao lidarmos com as posições do array, é importante lembrar que o primeiro item está no índice 0 (zero). Por exemplo, se precisarmos exibir apenas o primeiro e o segundo item do nosso array, podemos fazer da seguinte forma:
console.log(dias[0]); // Domingo
console.log(dias[1]); // Segunda
Como podemos ver, acessamos o item desejado utilizando colchetes e informando o número do índice. No exemplo acima, ao acessar o índice 0, exibimos o valor “Domingo”. Essa parte, por mais simples que possa parecer, é de extrema importância, pois é comum que novos desenvolvedores se confundam e esqueçam que a primeira posição do array está no índice 0, a segunda está no índice 1 e assim por diante.
Caso seja necessário adicionar mais de um item ao array, podemos evitar chamar repetidamente os métodos push
ou unshift
. Em vez disso, podemos passar vários valores ao mesmo tempo. Por exemplo, para adicionar “Quinta” e “Sexta”, podemos fazer o seguinte:
dias.push('Quinta', 'Sexta'); // Domingo
console.log(dias);
// ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta']
Lembrando que o mesmo se aplica ao método unshift
.
Outro aspecto interessante sobre os métodos push
e unshift
é que ambos retornam o tamanho atual do array, ou seja, a quantidade de itens que ele contém.
console.log(dias.push('Sábado'));
// 7
console.log(dias);
/*
[
'Domingo',
'Segunda',
'Terça',
'Quarta',
'Quinta',
'Sexta',
'Sábado'
]
*/
Agora nosso array de dias está completo, contendo todos os sete dias da semana.
O JavaScript nos oferece os métodos pop
e shift
. O método pop
remove o último item do array, enquanto o método shift
remove o primeiro item. Vamos ver como fica o nosso código para remover “Domingo” e “Sábado” do nosso array de dias.
dias.shift();
dias.pop();
console.log(dias);
// ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta']
É importante observar que tanto o método pop
quanto o método shift
retornam o item removido do array. Vamos fazer uma alteração no código anterior para remover e exibir os itens removidos no console.
console.log(dias.shift());
// Domingo
console.log(dias.pop());
// Sábado
Você pode estar se perguntando como remover um item específico do meio do array ou pesquisar por um item em particular. Nesses casos, precisamos primeiro identificar a posição do item no array, o que pode ser feito utilizando a função indexOf
. Em seguida, podemos utilizar a função splice
para remover o item.
const dias = [
'Domingo',
'Segunda',
'Terça',
'Quarta',
'Quinta',
'Sexta',
'Sábado'
];
const indice = dias.indexOf('Quarta');
if (indice > -1) {
dias.splice(indice, 1);
}
console.log(dias);
// ['Domingo', 'Segunda', 'Terça', 'Quinta', 'Sexta', 'Sábado']
No exemplo acima, utilizamos a função indexOf
para encontrar o índice do item no array. Caso a função não encontre o item, seu retorno será -1 e nenhuma alteração será feita no array.
Por sua vez, a função splice
recebe dois parâmetros: o primeiro indica a partir de qual índice ocorrerá a exclusão, e o segundo indica a quantidade de itens a serem removidos a partir desse índice. No exemplo, informamos 1 como segundo parâmetro, o que significa que será excluído apenas o item na posição encontrada pelo indexOf
. Além disso, a função splice
retorna o item que foi excluído do array.
console.log(dias.splice(indice, 1));
// Quarta
Para percorrer cada item do array, podemos utilizar laços de repetição. Caso você não esteja familiarizado com laços de repetição, recomendo que leia o arquivo correspondente em meu blog. Basta clicar aqui para acessá-lo.
Normalmente, a escolha recai sobre o uso do for
ou do forEach
. Ambos produzem o mesmo resultado, mas suas estruturas diferem.
No exemplo abaixo, utilizaremos a propriedade length
para obter a quantidade total de itens no array. Em seguida, percorreremos todos os itens do início ao fim.
const dias = [
'Domingo',
'Segunda',
'Terça',
'Quarta',
'Quinta',
'Sexta',
'Sábado'
];
for(let i=0; i<dias.length;i++) {
console.log(dias[i]);
}
Fazendo uso do forEach
o código fica o seguinte:
const dias = [
'Domingo',
'Segunda',
'Terça',
'Quarta',
'Quinta',
'Sexta',
'Sábado'
];
dias.forEach(function(dia){
console.log(dia);
})
E como podemos observar, ambos os códigos produzem a mesma saída.
// Domingo,
// Segunda
// Terça
// Quinta
// Sexta
// Sábado
Como mencionado anteriormente, podemos armazenar qualquer tipo de dado em um array, e é bastante comum trabalharmos com arrays de objetos. Para adicionar um objeto ao array, podemos utilizar o método push
, como já vimos.
const alunos = [
{ nome: 'João', idade: 20 },
{ nome: 'Maria', idade: 22 },
];
alunos.push({ nome: 'Pedro', idade: 23 });
Note que, quando se trata de remover itens de um array de objetos, as funções unshift
, pop
e splice
funcionam normalmente. No entanto, a abordagem para descobrir o índice do objeto no array muda um pouco.
O método indexOf
não é útil nesse caso, pois ele não compara o conteúdo dos objetos. Em vez disso, o método findIndex
se encaixa muito bem, pois possui o mesmo comportamento funcional do indexOf
. Se o item não for encontrado, seu retorno será -1. Observe como fica o código:
const indice = alunos.findIndex(aluno => aluno.nome === 'Maria');
if (indice > -1) {
alunos.splice(indice, 1);
}
Neste artigo vimos como:
E para você continuar avançando em seus estudos, não deixe de ler o artigo Avançando com arrays.