tengo un objeto anidado como este
const sections = { text : {id : 1 , text: 'something' }, link : {id : 2 , text: 'something' , 'href' : 'http://example.com' }, social : { telegram : {id : 3 , text : 'my telegram' , 'address' : '@mytelegram'} , twitter : {id : 4 , text : 'my twitter' , 'address' : '@mytwitter'} , } }
quiero tener una función que me dé cada sección pasándole la clave de propiedad
function getSection(key ){ console.log(sections[key]); }
esto funciona para text
y link
pero si quiero social.telegram
esto no funcionará, ¿hay alguna forma de resolver esto sin algún tipo de bucle de secciones?
------------- editar ------------------------
también, ¿qué pasa si quiero establecer el valor para el objeto de las sections
?
algo como
function setSectionText(key , newText) { sections[key].text = newText ; }
Debe separar la clave y obtener los objetos externos e internos hasta obtener el resultado deseado.
function getSection(key) { return key .split('.') .reduce((o, k) => o?.[k], sections); } const sections = { text: { id: 1, text: 'something' }, link: { id: 2, text: 'something', href: 'http://example.com' }, social: { telegram: { id: 3, text: 'my telegram', address: '@mytelegram' }, twitter: { id: 4, text: 'my twitter', address: '@mytwitter' } } }; console.log(getSection('social.telegram')); getSection('social.telegram').id = 42; console.log(sections);
.as-console-wrapper { max-height: 100% !important; top: 0; }