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

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

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 Relatório

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 Relatório

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