Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

421
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!