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

159
Vistas
¿Eliminar un parámetro de búsqueda de URL cuando hay nombres duplicados?

Estoy tratando de manipular mi URL usando URLSearchParams . Sin embargo URLSearchParams.delete() espera el nombre del parámetro. Si tengo parámetros con el mismo nombre (por lo que he probado en Chrome), eliminará todos los parámetros con ese nombre. ¿Hay alguna manera de eliminar por nombre y valor?

Mi consulta se parece a esto:

?color[]=Black&color[]=Green&material[]=Steel

Entonces, cuando llamo a .delete("color[]") , eliminará ambos color[]= params, pero ¿qué pasa si solo quiero eliminar uno específico?

El motivo de los nombres duplicados es que el backend (PHP) está aprovechando esta funcionalidad para analizar automáticamente los parámetros en matrices... lo que requiere la sintaxis anterior.

El panorama general es: estoy tratando de agregar/eliminar "filtros" de esta futura matriz. Además, algunas categorías de filtro podrían tener valores coincidentes, por lo que tampoco quiero eliminarlos por valor. Estoy abierto a considerar un enfoque completamente nuevo... simplemente tratando de hacerlo de la manera menos extraña.

-- Editar --

Para cualquier usuario de Laravel, recomiendo no usar la sintaxis sin índice. Simplemente use color[0]= , color[1]= etc. No me di cuenta de que laravel admite ambas sintaxis.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Para eliminar un par clave/valor específico, recorra las entradas, filtre las no deseadas y cree un nuevo URLSearchParams :

 function deleteParamsEntry(params, key, value) { const newEntries = Array.from(params.entries()).filter( ([k, v]) => !(k === key && v === value) ); return new URLSearchParams(newEntries); } const query = "?color[]=Black&color[]=Green&material[]=Steel"; const params = new URLSearchParams(query); const newParams = deleteParamsEntry(params, "color[]", "Green"); console.log(newParams.toString());
about 4 years ago · Juan Pablo Isaza Denunciar

0

Pruebe este enfoque:

 const deleteURLParamsByNameAndValue = (urlString, paramName, paramValue) => { const url = new URL(urlString) const params = url.searchParams const newParamArray = [] for (var kvPair of params.entries()) { const k = kvPair[0] const v = kvPair[1] if (k!==paramName || v!==paramValue) { newParamArray.push(kvPair) } } const newSearch = new URLSearchParams(newParamArray) return decodeURI(`${url.origin}${url.pathname}?${newSearch}`) } const urlString = 'https://example.com/path1/path2?color[]=Black&color[]=Green&material[]=Steel' deleteURLParamsByNameAndValue(urlString,'color[]','Black') // returns 'https://example.com/path1/path2?color[]=Green&material[]=Steel'
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