मैं समाधान पढ़ा है और मैं कुछ करने की कोशिश की। object[key]
विधि का उपयोग करने का प्रयास करने के बाद मुझे एहसास हुआ कि यह काम नहीं करेगा। मैं एक हैशसेट चाहता था जो HTML तत्वों को स्टोर कर सके। इन ऑब्जेक्ट्स को जोड़ने पर key
को स्ट्रिंग में अनुवादित किया गया था, इसलिए मैं jQuery पर आधारित अपने सेट के साथ आया था। यह add
, remove
, contains
और clear
का समर्थन करता है।
var HashSet = function() {
var set = [];
this.add = function (obj) {
if (!this.contains(obj)) {
set.push(obj);
}
};
this.remove = function (obj) {
set = jQuery.grep(set, function (value) {
return value !== obj;
});
};
this.clear = function() {
set = [];
};
this.contains = function (obj) {
return $.inArray(obj, set) > -1;
};
this.isEmpty = function() {
return set.length === 0;
};
};
नोट
जब सेट करने के लिए $('#myElement')
की तरह कुछ जोड़ने, एक असली HTML तत्व $('#myElement')[0]
जोड़ना चाहिए। ओह ... और यदि आप बदले गए नियंत्रणों की एक सूची रखना चाहते हैं - तत्व के नाम का उपयोग करें (मुझे :radio
नियंत्रणों के साथ एक समस्या दी गई है)।
टिप्पणी 2
मुझे लगता है कि object[key]
तेजी से अपने पूर्णांकों के लिए हो सकता है।
Note3
आप केवल संख्या या स्ट्रिंग स्टोर करने के लिए जा रहे हैं, इस सेट तेजी से हो जाएगा:
var HashSet = function() {
var set = {};
this.add = function (key) {
set[key] = true;
};
this.remove = function (key) {
delete set[key];
};
this.clear = function() {
set = {};
};
this.contains = function (key) {
return set.hasOwnProperty(key);
};
this.isEmpty = function() {
return jQuery.isEmptyObject(set);
};
};
स्रोत
2014-10-09 20:43:18
आम तौर पर, एक वस्तु। –
संभावित डुप्लिकेट [मैं जावास्क्रिप्ट में एक शब्दकोश या हैशटेबल कैसे कार्यान्वित करूं?] (Http://stackoverflow.com/questions/1208222/how-do-i-implement-a-dictionary-or-hashtable-in-javascript) – Jonn
मैं इस समझौते में हूं कि यह एक डुप्लिकेट है (हालांकि हर कोई एक सेट के रूप में मानचित्र का उपयोग करने पर नहीं उठाता है ..), लेकिन लिंक किए गए प्रश्न में दिए गए उत्तरों में से कई idiosyncrasies और नोट्स नीचे आते हैं। – user2864740