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

161
Views
Eliminación de parámetros de URL mediante URLSearchParams

Estoy utilizando la API URLSearchParams para eliminar claves/valores de la cadena de consulta en mi URL.

Tengo el siguiente fragmento:

 params = new URLSearchParams('a=x&b=y&c=z'); params.forEach(function(value, key){ console.log("Deleted: ", key, value, params.toString()); params.delete(key); }); console.log("Left with: ", params.toString());

Invariablemente, Left with: devuelve parte de los parámetros de consulta.

Salida en este JSFiddle:

 ☁️ "Running fiddle" "Deleted: ", "a", "x", "a=x&b=y&c=z" "Deleted: ", "c", "z", "b=y&c=z" "Left with", "b=y"

Mi entendimiento de forEach() es que recorrerá todos los pares clave/valor, pero según este violín, parece que sale del ciclo en el penúltimo par.

Editar, según los comentarios en los comentarios a continuación:

Estoy tratando de retener selectivamente uno o dos parámetros (basado en una lista proporcionada).

 params = new URLSearchParams('a=x&b=y&c=z&d=1'); params.forEach(function(value, key){ retainList = ['d']; if (retainList.includes(key)){ console.log("Retaining ", key); } else { console.log("Deleted: ", key, value, params.toString()); params.delete(key); } }); console.log("Left with: ", params.toString());
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Parece que hay un problema de referencia extraño con URLSearchParams. Incluso cuando usa el método .keys() para obtener una lista de claves, parece que está dando una referencia a su lista interna de claves.

Puede solucionar este problema clonando la lista de claves usando spread

 params = new URLSearchParams('a=x&b=y&c=z'); keys = [...params.keys()] for (key of keys) { console.log("Deleting: ", key, params.get(key), params.toString()); params.delete(key) }; console.log("Left with: ", params.toString());

Para lograr el resultado deseado podrías hacer:

 params = new URLSearchParams('a=x&b=y&c=z&d=1'); retainList = ['d'] for (key of [...params.keys()]) { if (! retainList.includes(key)) { console.log("Deleting: ", key, params.get(key), params.toString()); params.delete(key) } }; console.log("Left with: ", params.toString());

about 4 years ago · Santiago Trujillo 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!