जावास्क्रिप्ट, सभी वस्तुओं HashMaps की तरह एक सा काम करते हैं। हालांकि, इन हैशैप्स की चाबियाँ तार होनी चाहिए। वे नहीं कर रहे हैं, वे toString()
साथ परिवर्तित कर रहे हैं। इसका मतलब है कि:क्या जावास्क्रिप्ट के लिए हैशपैप लाइब्रेरी है?
var a = {foo: 1};
var b = {bar: 2};
var o = {};
o[a] = 100;
o[b]; // 100
JSON.stringify(o); // '{"[object Object]":100}'
यही है, के बाद से किसी भी सादे वस्तु की toString()
[object Object]
है, वे सभी एक ही मूल्य का समाधान करें।
मैं एक hashmap जहां एक ही गुणों के साथ ऑब्जेक्ट्स और मूल्यों एक ही मूल्य का पता है, लेकिन विभिन्न गुणों या मूल्यों विभिन्न मूल्यों को संबोधित के साथ वस्तुओं को बनाने के लिए करना चाहते हैं। यही कारण है:
var a = {foo: 1};
var b = {bar: 2, baz: 3};
var c = {baz: 3, bar: 2};
var hash = new Hash();
hash.set(a, 100);
hash.get(b); // undefined
hash.set(b, 200);
hash.get(b); // 200
hash.get(c); // 200
मेरी पहली वृत्ति तार में वस्तुओं चालू करने के लिए JSON.stringify()
उपयोग करने के लिए गया था, लेकिन:
var hash = {};
var b = {bar: 2, baz: 3};
var c = {baz: 3, bar: 2};
hash[JSON.stringify(b)] = 100
hash[JSON.stringify(b)] // 100
hash[JSON.stringify(c)] // undefined
JSON.stringify(b) // '{"bar":2,"baz":3}'
JSON.stringify(c) // '{"baz":3,"bar":2}'
है, JSON क्रमबद्धता क्रम पर निर्भर है।
वहाँ एक अच्छा पुस्तकालय या तकनीक इस तरह एक hashmap लागू करने के लिए है?
अद्यतन:
hash({foo: 1, bar: 2}) == hash({bar: 2, foo: 1})
हाँ, इसे कुछ काम करने की ज़रूरत है जो कि परफॉर्मेंट और बुलेट प्रूफ हो, लेकिन मुझे लगता है कि आपको सही विचार मिल गया है। – Peeja
@Pij: मुझे यकीन नहीं है कि यह अभी भी आपकी आवश्यकताओं को पूरा करते हुए प्रदर्शन किया जा सकता है। हालांकि, आपकी सटीक जरूरतों के आधार पर शायद इसे काफी अच्छा बनाया जा सकता है। – LukeH