Dado un objeto, quiero obtener la clave principal a partir del elemento secundario. Como solo me importa la clave, estoy iterando desde las entradas, pero siempre devuelve indefinido.
var book = { "chapter1": { "paragraph1": { "text": "..." }, "paragraph2": { "text": "..." } }, "chapter2": { "paragraph3": { "text": "..." }, "paragraph4": { "text": "..." } }, "chapter3": { "paragraph5": { "text": "..." }, "paragraph6": { "text": "..." } } }; var section = "paragraph3"; const category = Object.entries(book).find(([, e]) => Object.values(e).includes(section)); /// should return chapter2 if (category) { console.log(category[0], category[1]); } else { console.log("Not Found"); }Simplemente reemplace .values() por .keys() en su código:
var book = { "chapter1": { "paragraph1": { "text": "..." }, "paragraph2": { "text": "..." } }, "chapter2": { "paragraph3": { "text": "..." }, "paragraph4": { "text": "..." } }, "chapter3": { "paragraph5": { "text": "..." }, "paragraph6": { "text": "..." } } }; var section = "paragraph3"; const category = Object.entries(book).find(([, e]) => Object.keys(e).includes(section)); /// should return chapter2 if (category) { console.log(category[0], category[1]); } else { console.log("Not Found"); }aquí hay una solución sobre cómo obtener la clave principal de los niños
var book = { chapter1: { paragraph1: { text: '...' }, paragraph2: { text: '...' } }, chapter2: { paragraph3: { text: '...' }, paragraph4: { text: '...' } }, chapter3: { paragraph5: { text: '...' }, paragraph6: { text: '...' } } }; var section = 'paragraph3'; const category = Object.entries(book).find(e => Object.keys(e[1]).includes(section) ); /// should return chapter2 if (category) { console.log(category[0]); } else { console.log('Not Found'); }