KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Is it possible to get the object property name as a string person = {}; person.first_name = 'Jack'; person.last_name = 'Trades'; person.address = {}; person.address.street = 'Factory 1'; person.address.country = 'USA'; I'd like to use it like this: var pn = propName( person.address.country ); // should return 'country' or 'person.address.country' var pn = propName( person.first_name ); // should return 'first_name' or 'person.first_name' NOTE : this code is exactly what I'm looking for. I understand it sounds even stupid, but it's not. This is what I want to do with it. HTML person = {}; person.id_first_name = 'Jack'; person.id_last_name = 'Trades'; person.address = {}; person.address.id_address = 'Factory 1'; person.address.id_country = 'USA'; extPort.postMessage ( { message : MSG_ACTION, propName( person.first_name ): person.first_name } }; ---------------------- ANSWER ----------------------- Got it thanks to ibu. He pointed the right way and I used a recursive function var res = ''; function propName(prop, value) { for (var i in prop) { if (typeof prop[i] == 'object') { if (propName(prop[i], value)) { return res; } } else { if (prop[i] == value) { res = i; return res; } } } return undefined; } var pn = propName(person, person.first_name); // returns 'first_name' var pn = propName(person, person.address.country); // returns 'country' DEMO: http://jsbin.com/iyabal/1/edit
Tags (comma-separated)
Save Edits
Cancel