Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

418
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda