Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Sobre o método .push()

Coincidentemente, hoje saiu um vídeo do Mario Souto, falando sobre o método .push() ser usado com string e suas complicações com essa prática. Na página sobre o método .push() na mdn, também diz o seguinte:

Os únicos objetos que implementam nativamente array são as strings, porém elas não são adequadas para a aplicação desse método, pois são imutáveis.

Eu assisti a aula 2 do módulo, validação de formulários, até o minuto 9:25. Um pouco antes desse ponto, o professor criou uma array, vazia, usando o método .push() para exibir as mensagens de erros do formulário criado na aula. Me ocorreu a dúvida, se existem exceções para o uso do método .push() + strings ou eu entendi errado as explicações do site mdn e o conteúdo do vídeo.

A dúvida é a seguinte:

  1. .push() + array é diferente de .push() + string?
  2. Se sim. Então, .push() + array não trás complicações para o nosso código?
  3. Se não. Se, .push() + array e/ou string são a mesma coisa, então existe exceções?
2 respostas
solução!

Fala, Fernando! Tudo bem?

Excelente pergunta! Eu gostaria de deixar meus 20 centavos nessa discussão (risos).

Então, com base na documentação do método push encontrado na mdn quando ela fala que :

" Os únicos objetos que implementam nativamente array são as strings, porém elas não são adequadas para a aplicação desse método, pois são imutáveis. "

Isso quer dizer que o tipo string por padrão é também um array, pois é uma cadeia de caracteres. Em algumas linguagens como C tem o tipo char que é para caracteres, e o tipo string é uma cadeia de caracteres. No JavaScript, não tem o tipo char, e string é string, e portanto acabam sendo imutáveis. Você não consegue adicionar um caractere ao final de uma string com o método push():

const banana = 'banana'
banana.push('a')
console.log(banana)

Em todo o exemplo da documentação, o que vemos é exemplos de como usar o método push para trabalhar com arrays.

"O método push adiciona valores a um array."

Em alguns casos, o push pode sim trazer complicações para o seu código, pois ele depende da propriedade length para adicionar um valor no array, e se essa propriedade não existe, no caso de um array vazio ele considera zero e adiciona. E outra coisa, ele sempre adiciona ao final do array. Então é interessante pensar bem o que vc está desenvolvendo e se não tem outras formas de manipular arrays com os métodos já existentes como o map, forEach, find, findIndex, etc.

Mas é uma ótima pergunta! Bons estudos e um grande abraço.

Muitissimo obrigado pelo esclarecimento. Paraece que quando se estuda sozinho, chega em um ponto no qual fica dificil até de raciocinar. Obrigado!