Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

413
Visualizações
¿Cómo guardar una matriz de objetos en localStorage? Obteniendo TypeError: push no es una función

Estoy tratando de insertar los datos del jugador (objeto) en una matriz, luego guardarlos en localStorage , pero no puedo hacerlo funcionar incluso si inicializo la matriz. En la primera ejecución obtuve los datos, pero en las siguientes ejecuciones no se reconoce la matriz. ¿Alguien sabe qué está pasando? Aquí está mi código:

 function handleRanking() { console.log('run function'); let prevRanking = localStorage.getItem('ranking'); if (prevRanking === null) { console.log('null value'); prevRanking = []; } const player = { name, score: total, picture: gravatarEmail, }; if (Array.isArray(prevRanking)) { prevRanking.push(JSON.stringify(player)); localStorage.setItem('ranking', prevRanking); } else { console.log('not an array'); } }
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Una cosa que debe saber de inmediato es que localStorage solo puede guardar cadenas. Por lo tanto, cuando desee guardar un valor que no sea una cadena, debe llamar a JSON.stringify(data) antes de guardar y JSON.parse(data) después de obtener los datos y antes de usarlos.

En su caso, una manera fácil es agregar el player y luego guardar prevRanking como cadena. Pero antes, debe analizar lo que obtiene, ya que siempre es una string si no es null .

 function handleRanking() { console.log('run function'); let prevRanking = localStorage.getItem('ranking'); if (prevRanking === null) { console.log('null value'); prevRanking = []; }else{ prevRanking = JSON.parse(prevRanking); } const player = { name, score: total, picture: gravatarEmail, }; if (Array.isArray(prevRanking)) { prevRanking.push(player); localStorage.setItem('ranking', JSON.stringify(prevRanking)); } else { console.log('not an array'); } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Una vez que haya recuperado la información del almacenamiento local, debe pasarla al método JSON.parse . Porque al almacenar información en el almacenamiento local, se guarda como una cadena.

 function handleRanking() { console.log('run function'); let prevRanking = localStorage.getItem('ranking'); if (prevRanking === null) { console.log('null value'); prevRanking = []; } prevRanking = JSON.parse(prevRanking); // added it in here so prevRanking is definetly defined const player = { name, score: total, picture: gravatarEmail, }; if (Array.isArray(prevRanking)) { prevRanking.push(JSON.stringify(player)); localStorage.setItem('ranking', JSON.stringify(prevRanking)); } else { console.log('not an array'); } }
about 4 years ago · Juan Pablo Isaza Relatório

0

Porque el valor de una clave que se obtiene de LocalStorage es una cadena. Entonces, tienes que JSON. parse antes de empujar. https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem#parameters

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda