Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gostaria de ajuda com um projeto

Já fiz o curso = JavaScript na Web: armazenando dados no navegador, porém continuo com problemas ainda, não consigo adicionar dois objetos em um mesmo array no local storage. Quando preencho as informações novamente os dados do objeto anterior no local storage é substituido. Quero criar mas de um objeto no mesmo array no local storage.

Segue código, conto com a ajuda por favor.

const arrayDeClientes = [];

function cadastraPosto (nomedoposto, endereco, cidade, UF) {


   var nomedoposto = document.getElementById("nomedoposto");
   var endereco = document.getElementById("endereco");
   var cidade = document.getElementById("cidade");
   var UF = document.getElementById("UF");


      const cadastroAtual = { 
      "nomedoposto" : nomedoposto.value,
        "endereco" : endereco.value,
        "cidade" : cidade.value,
         "UF" : UF.value,

      }

      arrayDeClientes.push({cadastroAtual})


   localStorage.setItem("item", JSON.stringify(arrayDeClientes));


    }
1 resposta
solução!

Oi Pedro! Tudo bem?

Pelo que entendi, você está tendo problemas em adicionar mais de um objeto no mesmo array no local storage, certo?

O que está acontecendo é que você está criando um novo array a cada vez que a função "cadastraPosto" é chamada. Para adicionar um novo objeto no mesmo array, você precisa primeiro verificar se já existe algum dado salvo no local storage e, se existir, adicioná-lo ao array antes de adicionar o novo objeto.

Você pode fazer isso da seguinte maneira:

const arrayDeClientes = JSON.parse(localStorage.getItem("item")) || [];

function cadastraPosto (nomedoposto, endereco, cidade, UF) {

   var nomedoposto = document.getElementById("nomedoposto");
   var endereco = document.getElementById("endereco");
   var cidade = document.getElementById("cidade");
   var UF = document.getElementById("UF");

   const cadastroAtual = { 
      "nomedoposto" : nomedoposto.value,
        "endereco" : endereco.value,
        "cidade" : cidade.value,
         "UF" : UF.value,
   }

   arrayDeClientes.push(cadastroAtual);

   localStorage.setItem("item", JSON.stringify(arrayDeClientes));
}

Note que, antes de criar o novo objeto "cadastroAtual", eu adicionei uma verificação para verificar se já existe algum dado salvo no local storage. Caso exista, o array "arrayDeClientes" é preenchido com esses dados antes de adicionar o novo objeto.

Espero ter ajudado e bons estudos!