इस कार्यात्मक जावास्क्रिप्ट समाधान Array.prototype.reduce() उपयोग करता है:
['red', 'green', 'blue']
.reduce((hash, elem) => { hash[elem] = true; return hash }, {})
Parameter Details:
- कॉलबैक - सरणी में प्रत्येक मान पर निष्पादित करने के लिए फ़ंक्शन।
- प्रारंभिक वैल्यू - कॉलबैक की पहली कॉल के पहले तर्क के रूप में उपयोग करने के लिए ऑब्जेक्ट।
कॉलबैक के लिए तीसरा तर्क सरणी में संसाधित वर्तमान तत्व की अनुक्रमणिका है। तो अगर आप अपने सूचकांक के तत्वों का एक लुकअप तालिका बनाना चाहता था:
['red', 'green', 'blue'].reduce(
(hash, elem, index) => {
hash[elem] = index++;
return hash
}, {});
रिटर्न:
Object {red: 0, green: 1, blue: 2}
पुरातन से
स्रोत
2015-08-01 22:45:06
अलावा, स्ट्रिंग, संख्याओं, बूलियन्स, आदि –
@Marcel की तरह: मैं नहीं कर रहा हूँ काफी यकीन है कि इन्हें आंतरिक रूप से कैसे संभाला जाता है लेकिन मुझे लगता है कि वे वस्तुएं भी हैं। –
मुझे यह भी यकीन नहीं है कि जेएस इंजन आंतरिक रूप से उनको कैसे संभालते हैं, लेकिन स्ट्रिंग्स, संख्याएं और बूलियन निश्चित रूप से [ईसीएमएस्क्रिप्ट विनिर्देश] (http://ecma262-5.com/ELS5_Section_8.htm#Section_8) के अनुसार ऑब्जेक्ट्स नहीं हैं। उदाहरण के लिए, 'स्ट्रिंग' विधियों का उपयोग करते समय, एक स्ट्रिंग आदिम अस्थायी रूप से किसी ऑब्जेक्ट में परिवर्तित हो जाता है, विधि को कॉल किया जाता है और 'स्ट्रिंग' ऑब्जेक्ट को स्ट्रिंग आदिम में परिवर्तित कर दिया जाता है। यह भी ध्यान दें कि सभी वस्तुओं को 'सत्य' का मूल्यांकन करना चाहिए, जबकि प्राथमिकताएं 'झूठी' का मूल्यांकन कर सकती हैं। उदा। 'Var yes = नया बूलियन (झूठा); अगर (हाँ) चेतावनी ("मैं <3 जावास्क्रिप्ट"); 'आउटपुट' I <3 जावास्क्रिप्ट ' –