ES2015 का उपयोग करने के लिए Reflect.ownKeys(obj)
और एक पुनरावृत्ति के माध्यम से गुणों पर पुनरावृत्ति को जोड़ने के लिए ।
उदाहरण के लिए:
let obj = { a: 'Carrot', b: 'Potato', Car: { doors: 4 } };
द्वारा पुनरावृत्त किया जा सकता है
// logs each key
Reflect.ownKeys(obj).forEach(key => console.log(key));
यदि आप किसी ऑब्जेक्ट की कुंजियों के मानों पर सीधे चलना चाहते हैं, तो आप iterator
स्ट्रिंग्स, सरणियों, टाइप किए गए सरणियों, मैप और सेट के लिए JavaScipts के डिफ़ॉल्ट पुनरावृत्तियों की तरह, एक परिभाषित कर सकते हैं ।
जेएस डिफ़ॉल्ट पुनरावृत्ति गुण के माध्यम से पुनरावृति करने का प्रयास करेगा, जिसे परिभाषित किया जाना चाहिए Symbol.iterator
।
यदि आप सभी वस्तुओं पर पुनरावृति करना चाहते हैं, तो आप इसे ऑब्जेक्ट के प्रोटोटाइप के रूप में जोड़ सकते हैं:
Object.prototype[Symbol.iterator] = function*() {
for(p of Reflect.ownKeys(this)){ yield this[p]; }
}
यह आपको लूप के लिए किसी ऑब्जेक्ट के मूल्यों पर पुनरावृति करने में सक्षम करेगा, उदाहरण के लिए:
for(val of obj) { console.log('Value is:' + val ) }
सावधानी : इस उत्तर को लिखने के रूप में (जून 2018) अन्य सभी ब्राउज़र, लेकिन IE, के for...of
माध्यम से जनरेटर और पुनरावृत्ति का समर्थन करते हैंSymbol.iterator
if (typeof(obj[propt]) === 'object') {
/ * इसे फिर से करें * /}