Como retornar Chaves, Atributos, Índice de um Value pesquisado no JSON com Nodejs? #2359
Replies: 3 comments 3 replies
-
Manda a sua solução que retorna o indice 0 |
Beta Was this translation helpful? Give feedback.
-
@eriseu pode dar mais uns exemplos de entrada e saída esperados? Por exemplo:
Tem bastante informação aqui:
Tu precisa dos índices? Dos valores? Dos dois? |
Beta Was this translation helpful? Give feedback.
-
Presumi algumas coisas e venho te trazer uma sugestão. Deixei o código que fiz aqui https://jsfiddle.net/fL5dxmo1/. O resultado foi esse: {
result: [
"doisumum",
"doisumdois",
"doisumtres",
"doisdoisum",
"doisdoisdois",
"doisdoistres"
]
} Acredito que tava em linha com o que tu esperava (de trazer os 6 valores). Agora, falando da implementação. Eu acho que tem um erro no teu input, faltou uma chave entre o elemento {
"um": ...,
"dois": ...
} Caso não seja isso, só dá um aviso. Com isso em mente, o algoritmo que fiz é bem simples e não tão eficiente quanto poderia ser (explico mais a seguir):
Função de buscafunction find(input, word, path = []) {
if (Array.isArray(input)) {
if (input.indexOf(word) === -1) {
return [];
}
return path;
}
const entries = Object.entries(input);
const result = entries.map(([key, values]) => {
return find(input[key], word, path.concat(key));
});
return result.flat();
} Função de agregação dos resultadosfunction all(input, key) {
if (Array.isArray(input)) {
return input;
}
const entries = Object.entries(input[key]);
const result = entries.map(([key, values]) => {
return all(values, key);
});
return result.flat();
} Usoconst search = "doisdoisum";
const keys = find(input, search);
const result = all(input, keys[0]);
console.log({ result }); Se era isso o que tu queria essa é uma solução. Falando sobre a eficiência desse algoritmo, é um algoritmo extremamente ineficiente. Se tu tivesse mais chaves além de Acredito que uma implementação mais eficiente pode ser feita usando uma estrutura de dados como Trie/Prefix Tree. Uma outra maneira seria iterar em cima da palavra pesquisada até encontrar uma das chaves no teu array. Por exemplo:
No momento que encontrou, começa a pesquisar em cima das chaves de Existem algumas outras formas de fazer, mas espero ajudar com algumas ideias! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Tenho um arquivo JSON com essa estrutura:
arquivo.json
arquivo.js
Este é um exemplo de arquivo, quero aplicar em qualquer arquivo com este padrão de níveis.
Faço uma busca pelo value doisumum, ele me retorna o índice 0, preciso das chaves dois e doisum e também o value do índice 1 neste caso doisumdois.
Entendeu? São os 6 valores que preciso.
Estou usando Nodejs!
Você faz ideia de como faço isso?
Já há alguns dias venho tentando e descobri algumas formas de como não fazê-lo. :)
Beta Was this translation helpful? Give feedback.
All reactions