JSFiddle - React, Tailwind, and code Playground
JavaScript
var someObject = {
'part1' : {
'name': 'Part 1',
'size': '20',
'qty' : '50'
},
'part2' : {
'name': 'Part 2',
'size': '15',
'qty' : '60'
},
'part3' : [
{
'name': 'Part 3A',
'size': '10',
'qty' : '20'
}, {
'name': 'Part 3B',
'size': '5',
'qty' : '20'
}, {
'name': 'Part 3C',
'size': '7.5',
'qty' : '20'
}
]
};
Object.byString = function(o, s) {
s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
s = s.replace(/^\./, ''); // strip a leading dot
var a = s.split('.');
for (var i = 0, n = a.length; i < n; ++i) {
var k = a[i];
if (isObject(o) && k in o) {
o = o[k];
} else {
return;
}
}
return o;
}
function isObject (o) {
//How you acomplish this is upto you.
return o === Object(o);
}
console.log(Object.byString(someObject, 'part1.name'));
console.log(Object.byString(someObject, 'part2.qty'));
//This would throw exception before.
console.log(Object.byString(someObject, 'part3[0].name.iDontExist'));