i have a nested object like this
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'} ,
}
}
i want to have a function giving me each section by passing property key to it
function getSection(key ){
console.log(sections[key]);
}
this works for text
and link
but if i want social.telegram
this wont work
is there any way to solve this without some sort of looping throw sections ?
------------- edit ------------------------
also what if i want to set the value for the sections
object
something like
function setSectionText(key , newText)
{
sections[key].text = newText ;
}
You need to separate the key and get the outer and inner objects until the wanted result.
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; }