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

237
Visualizações
¿Cómo puedo obtener claves de un objeto anidado?

Tengo un objeto javascript con objetos anidados dentro:

 { "common": { "setting1": "Value 1", "setting2": 200, "setting3": true, "setting6": { "key": "value", "doge": { "wow": "" } } }, "group1": { "baz": "bas", "foo": "bar", "nest": { "key": "value" } }, "group2": { "abc": 12345, "deep": { "id": 45 } } }

y tengo que obtener todas las claves como matriz anidada.

He probado esta función:

 function getKeys(obj) { return Object.keys(obj).map((key, keys) => { if (typeof obj[key] !== 'object') return key; return [key, getKeys(obj[key])]; }); }

Y obtuve esto: //

 [ [ 'common', [ 'setting1', 'setting2', 'setting3', [Array] ] ], [ 'group1', [ 'baz', 'foo', [Array] ] ], [ 'group2', [ 'abc', [Array] ] ] ]

En lugar del resultado esperado como este:

 [ [ 'common', [ 'setting1', 'setting2', 'setting3','setting6', ['key','doge', ['wow']], [ 'group1', [ 'baz', 'foo', ['nest', ['key'] ], [ 'group2', [ 'abc', 'deep', ['id'] ] ] ]

etc.

Ayudame por favor

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede usar reduce en Object.entries y crear una función recursiva.

 const data = {"common":{"setting1":"Value 1","setting2":200,"setting3":true,"setting6":{"key":"value","doge":{"wow":""}}},"group1":{"baz":"bas","foo":"bar","nest":{"key":"value"}},"group2":{"abc":12345,"deep":{"id":45}}} function getKeys(data) { return Object.entries(data).reduce((r, [key, value]) => { r.push(key) if (typeof value === 'object') r.push(getKeys(value)) return r }, []) } console.log(getKeys(data))

about 4 years ago · Juan Pablo Isaza Relatório

0

Prueba esto

 function getKeys (obj) { const keys = Object.keys(obj); for (let i = 0; i < keys.length; i++){ const key = keys[i]; if (typeof obj[key] === 'object') { keys.splice(i+1, 0, getKeys(obj[key])); i++; } } return keys }

resultado:

 '["common",["setting1","setting2","setting3","setting6",["key","doge",["wow"]]],"group1",["baz","foo","nest",["key"]],"group2",["abc","deep",["id"]]]'

Probablemente no sea la solución más optimizada, pero debería funcionar.

about 4 years ago · Juan Pablo Isaza Relatório

0

Gracias, ambas opciones funcionaron! Solo tuve que agregar un registro nulo if (typeof obj[key] === 'object') debido a TypeError: no se puede convertir indefinido o nulo en claves de objeto const = Object.keys (obj); (uno de los valores era nulo y "El tipo de nulo devuelve 'objeto', que es un error histórico en JavaScript que quizás nunca se solucione").

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