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

169
Visualizações
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 Respostas
Responde à pergunta

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 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