2012-07-09 17 views
11

मेरे पास जावास्क्रिप्ट के शब्दकोश के बारे में एक प्रश्न है।जावास्क्रिप्ट शब्दकोश में कुंजी का उपयोग कर मूल्य कैसे खोजें

var Dict = [] 
var addpair = function (mykey , myvalue) [ 
    Dict.push({ 
    key: mykey, 
    value: myvalue 
    }); 
} 

मैं इस समारोह फोन और यह विभिन्न कुंजी और मूल्यों पारित करेंगे: मैं एक शब्दकोश है, जिसमें कुंजी-मान जोड़ों इस तरह गतिशील रूप से जोड़ा जाता है। लेकिन अब मैं कुंजी पर आधारित अपना मूल्य पुनर्प्राप्त करना चाहता हूं लेकिन मैं ऐसा करने में असमर्थ हूं। क्या कोई मुझे सही तरीके बता सकता है?

var givevalue = function (my_key) { 
    return Dict["'" +my_key +"'"]   // not working 
    return Dict["'" +my_key +"'"].value // not working 
} 

मेरी कुंजी एक चर रहा है के रूप में, मैं उपयोग नहीं कर सकते Dict.my_key

धन्यवाद।

उत्तर

17

जावास्क्रिप्ट में Arrays तारों के रूप में तारों का उपयोग नहीं करते हैं। आपको शायद पता चलेगा कि मान वहां है, लेकिन कुंजी एक पूर्णांक है।

आप एक वस्तु में Dict करते हैं, तो यह काम करेगा:

var Dict = {}; 
var addpair = function (my_key, my_value) { 
    Dict[my_key] = my_value; 
} 
var givevalue = function (my_key) { 
    return Dict[my_key]; 
} 

my_key चर पहले से ही एक स्ट्रिंग है, तो आप अधिक उद्धरण जरूरत नहीं है।

+0

हाय क्या मैं मूल्य –

+0

का उपयोग करके कुंजी ढूंढकर इसके विपरीत कर सकता हूं। ऑब्जेक्ट में प्रत्येक मान को तब तक करने के लिए आपको एक लूप करना होगा, जब तक कि आपको सही न मिल जाए, फिर उस कुंजी को वापस कर दें। समस्या यह है कि दो मान समान हो सकते हैं, इसलिए आपको डुप्लिकेट को रोकने के लिए कोड को एडाप्यर() में रखना होगा। –

+0

जावास्क्रिप्ट में Arrays * करते हैं * तारों के रूप में तारों का उपयोग करते हैं, और कुछ भी जो आप सरणी अनुक्रमणिका के रूप में उपयोग करने का प्रयास करते हैं, दृश्यों के पीछे एक स्ट्रिंग के लिए मजबूर किया जाएगा। आप 'toString' विधि के साथ ऑब्जेक्ट बनाकर और इसे सरणी अनुक्रमणिका के रूप में उपयोग करके इसकी पुष्टि कर सकते हैं। यह 'toString' विधि जो कुछ भी लौटाएगा उसका उपयोग करेगा। –

संबंधित मुद्दे