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

83
Vistas
Obtenga una matriz de objetos de URLSearchParams

Necesito extraer el filter , que es una matriz de objetos de una cadena de URL:

http://localhost:3006/menus?page=1&filter[0][id]=MenuID&filter[0][value]=2&filter[1][id]=ParentMenuName&filter[1][value]=u .

Esto es lo que tengo actualmente:

 const location = useLocation(); const searchParams = new URLSearchParams(location.search); const filterParamsValue = searchParams.getAll('filter'); // returns []

Esto es lo que quiero obtener del filter :

 [ { id: 'MenuID', value: '2' }, { id: 'ParentMenuName', value: 'u' } ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Un poco de funcionamiento rápido :D ...

 let s = `http://localhost:3006/menus?page=1&filter[0][id]=MenuID&filter[0][value]=2&filter[1][id]=ParentMenuName&filter[1][value]=u` // get just array of strings like ['filter[0][id]=MenuID', ...] let arr = s.split(/\&/).slice(1) let filters = {} arr.forEach(f => { const id = f.match(/\[([\d]+)\]/)[1] const prop = f.match(/\[([az]+)\]/)[1] if(filters[id]) { filters[id][prop] = f.match(/=([\w]+)/)[1] } else { filters[id] = {} filters[id][prop] = f.match(/=([\w]+)/)[1] } }) // show filters object: console.dir( filters ) /* { 0: { id: "MenuID", value: "2"}, 1: { id: "ParentMenuName", value: "u"} } */

Esto le da Objeto de filtros. Si necesita una matriz, puede convertirla como:

 /** * get object of filters and make an array of filters */ const arrayOfFilters = [] for(key in filters) { arrayOfFilters.push(filters[key]) } console.log(arrayOfFilters)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Escribí una función prototipo para analizar la matriz de corchetes de objetos. Esta función analiza dinámicamente los corchetes, lo que es bueno para objetos anidados

 URLSearchParams.prototype.toObject = function () { let _obj = {}; const bracketToDots = function (str) { return str.replaceAll('[', '.').replaceAll(']', '') } const parseDotNotation = function (str, val, obj) { let currentObj = obj, keys = str.split("."), i, l = Math.max(1, keys.length - 1), key; if (l === 1) { key = keys[0]; currentObj[key] = val; } else { for (i = 0; i < l; ++i) { key = keys[i]; currentObj[key] = currentObj[key] || {}; currentObj = currentObj[key]; } currentObj[keys[i]] = val; } } for (const [key, value] of this.entries()) { parseDotNotation(bracketToDots(key), value, _obj); } return _obj; } const lo = new URL('http://localhost:3006/menus?page=1&filter[0][id]=MenuID&filter[0][value]=2&filter[1][id]=ParentMenuName&filter[1][value]=u'); const searchParams = new URLSearchParams(lo.search); const params = searchParams.toObject(); console.log(params['filter'])

Resultado:

 { "0": { "id": "MenuID", "value": "2" }, "1": { "id": "ParentMenuName", "value": "u" } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

una versión corta

 function getSearchParameters () { const url = new URL(window.location) const searchParams = new URLSearchParams(url.search) const paramObj = {} for (const key of searchParams.keys()) { paramObj[key] = searchParams.getAll(key).length > 1 ? searchParams.getAll(key) : searchParams.get(key) } return paramObj }
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