यह एक स्ट्रिंग के रूप वस्तु संपत्ति नाम पाने के लिए संभव हैस्ट्रिंग के रूप वस्तु संपत्ति नाम प्राप्त
person = {};
person.first_name = 'Jack';
person.last_name = 'Trades';
person.address = {};
person.address.street = 'Factory 1';
person.address.country = 'USA';
मैं इस तरह इसका इस्तेमाल करना चाहते हैं:
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'
उन्नत में धन्यवाद
नोट: यह कोड वही है जो मैं ढूंढ रहा हूं। मैं समझता हूं कि यह बेवकूफ लगता है, लेकिन ऐसा नहीं है।
यही वह है जो मैं इसके साथ करना चाहता हूं।
एचटीएमएल
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
}
};
---------------------- उत्तर ------------ -----------
इसे ibu के लिए धन्यवाद मिला। उन्होंने कहा कि सही तरीके से इशारा किया और मैं एक पुनरावर्ती समारोह
इस्तेमाल किया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'
डेमो: http://jsbin.com/iyabal/1/edit
मैं उलझन में हूं ... आप क्यों चाहते हैं कि संपत्ति का नाम वही चीज़ लौटाए जो आपने इसे खिलाया था? आप पहले से ही संपत्ति का नाम जानते हैं ... यदि आप गुणों के माध्यम से पुन: प्रयास करने के लिए एक रास्ता तलाश रहे हैं, तो आप कुंजी के माध्यम से ब्रैकेट नोटेशन और लूप का उपयोग कर सकते हैं, क्योंकि गुण भी हैश इंडेक्स – RonaldBarzell
आपको संदर्भ भी पास करना होगा समारोह में वस्तु। –
स्वचालित रूप से नहीं। 'देश' संपत्ति द्वारा संदर्भित स्ट्रिंग को 'पता' ऑब्जेक्ट के बारे में कुछ भी पता नहीं है, और 'पता' संपत्ति द्वारा संदर्भित ऑब्जेक्ट को 'व्यक्ति' ऑब्जेक्ट के बारे में कुछ भी पता नहीं है। –