I need help with getting property of object with String in JS.
I have object
elements = {
element : {
date: {
day: \'Mo
You can do something like this
var elements = {
element: {
date: {
day: 'Monday'
},
example: {
abc: 'hii'
}
}
};
function getObjectByStringIdentifier(stringId) {
stringId = stringId.split('.');
// split string using `.`
var res = elements;
// define res as object
for (var i = 0; i < stringId.length; i++)
// iterate over array
res = res[stringId[i]]
// update res as inner object value
return res;
// return result
}
console.log(getObjectByStringIdentifier("element.date.day"));
console.log(getObjectByStringIdentifier("element.example.abc"));
Modern browsers support JSON.parse().
var arr_from_json = JSON.parse( json_string );
In browsers that don't, you can include the json2 library.
alert(arr_from_json.elements);
Yes you can ! :-)
var elements = {
element : {
date: {
day: 'Monday'
}
}
}
function getObjectByStringIdentifier ( stringId ) {
//return elements[stringId];
// ^ ^
// | |
// |------|---------------------------------------------|
// | |
// -----------| |
// | |
// ° °
return stringId.split('.').reduce(function(t,v){return t[v]; } , elements)
}
/** let's test it now ! **/
var stringIdentifier = "element.date.day";
var result = getObjectByStringIdentifier( stringIdentifier );
document.getElementById('el').innerHTML = result;
<div id='el'></div>
You can do something like this :
var elements = {
element : {
date: {
day: 'Monday'
}
},
cars : {
racing : "Lamborghini",
classic: "Rolls Royce"
}
}
function getObjectByStringIdentifier ( stringId ) {
objects = stringId.split(".");
element = elements;
for(i=0; i < objects.length; i++)
element = element[objects[i]];
return element;
}
alert(getObjectByStringIdentifier("cars.racing"));
alert(getObjectByStringIdentifier("element.date.day"));
alert(getObjectByStringIdentifier("cars.classic"));