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

220
Views
Javascript localStorage no funciona, sobrescribe el objeto

Tengo 20 botones y 20 enlaces y descripciones dentro de info_array. Agrego un detector de eventos de clic a cada botón. Al hacer clic en la función dentro de addEventListener, se debe guardar información única dentro de localStorage con el incremento de las claves de objeto en cada nuevo clic de botón.

El problema es que la función funciona y guarda objetos con un valor único dentro de localStorage como 0,1,2,3,... hasta el décimo objeto. Cuando las claves de objeto llegan a 10, el undécimo objeto con la clave 11 no se guarda en localStorage, el código simplemente sobrescribe el décimo objeto cada vez que hago clic en el botón 11, 12, 13, ... simplemente sobrescribe el valor del décimo objeto en lugar de crear y guardar un nuevo objeto con nuevo clave de objeto como 11,12,13,14,...

No puedo entender qué está mal con mi código porque funciona hasta el décimo objeto.

Código:

 for (let i = 0; i < 19; ++i) { let btn = document.createElement('BUTTON'); btn.addEventListener('click',function(e){ e.stopPropagation(); let newsList = localStorage, keys = Object.keys(localStorage).sort(), match = false, news = { "title":info_array[i].title, "description":info_array[i].description }; if (nl.length > 0) { // check if element exists in localStorage for(let n = 0; n < newsList.length; ++n){ if (JSON.parse(newsList[keys[n]]).link == info_array[i].link) { match = true; } } // if object is unique save in localStorage if (!match) { let key = (parseInt(keys.pop())+1).toString(); localStorage.setItem(key,JSON.stringify(news)); } }else{ // if localStorage is empty add first object localStorage.setItem(0,JSON.stringify(news)); } },{passive:true}); html.appendChild(element); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Es por esta línea:

 keys = Object.keys(localStorage).sort()

Específicamente, el error es causado por .sort()

Las cadenas se ordenan en el orden del diccionario . Entonces tus claves son:

 0, 1, 10, 2, 3, 4, 5, 6, 7, 8, 9

Esta lógica es similar a cómo las palabras

 app, big, branch, cut, dig, eye, fig, gem

están ordenados. La palabra branch viene después de big y no de gem porque comienza con b . Del mismo modo, el 10 viene después 1 y no 9 porque comienza con la letra 1 .

Cuando abre la última tecla y le agrega 1, obtendrá 10 porque la última tecla siempre es 9 .

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!