[java] जावा स्क्रिप्ट में जावा सेट की तरह कोई डेटा संरचना है?



Answers

सामान्य ऑब्जेक्ट का उपयोग क्यों न करें और जांचें कि क्या hasOwnProperty के hasOwnProperty साथ एक कुंजी मौजूद है?

var x = {};
x['key'] = 'val';
x.hasOwnProperty('key'); // true //
x.hasOwnProperty('key2'); // false //

और यहां एक और उन्नत उपयोग का मामला है:

var x = {};
var prefix = 'item_';
for(var i=0;i<10;i++){
   x[prefix+i] = 'value '+(i+1);
}
x.hasOwnProperty('item_6'); // true //
x.hasOwnProperty('other key'); // false //

वस्तुओं को हटाने से ऐसा किया जा सकता है:

delete x['key'];
Question

इस सवाल का पहले से ही उत्तर दिया गया है:

मैं जावास्क्रिप्ट में एक डेटा संरचना का उपयोग करना चाहता हूं जिसका इस्तेमाल आईडी की संख्या को स्टोर करने के लिए किया जा सकता है। मुझे यह जांचने में सक्षम होना चाहिए कि क्या एक कुंजी पहले से ही उस सेट में मौजूद है, कुछ जावा सेट्स की तरह

मैं निम्न व्यवहारों को प्राप्त करना चाहता हूं (यह कोड जावा में है):

Set<String> st = new HashSet<String>();
//add elemets

if(st.contains("aks") ){
  //do something
}

मैं एक जावास्क्रिप्ट / डोजो को इसके बाद के संस्करण के बराबर चाहता हूं।




संभावित रूप से एक एसोसिएटिव सरणी / हॅशटेबल / डिक्शनरी के साथ (मैं नहीं जानता कि यह कैसे ठीक कहा जाता है), सेट तत्वों को चाबियों के रूप में और मूल्यों के रूप में "कुछ और" का उपयोग कर।

insert: mySet[key] = "Whatever";

delete: mySet[key] = null;

check: if (mySet[key] != null) { ... }



समूह में कुंजियां नहीं हैं उन्होंने केवल मानों का सेट किया है, लेकिन नक्शे में कुंजी / मूल्य संस्थाओं के जोड़े हैं

नतीजतन, आपके पास 2 विकल्प हैं उनमें से प्रत्येक में इसकी कमियां और लाभ हैं:

  1. आप JavaScript वस्तु के ऊपर वर्णित के रूप में उपयोग कर सकते हैं। असल में यह एक मानचित्र / एसोसिएटिव सरणी / हैश टेबल है। इसका एक फायदा - आप इस प्रकार की संरचना से गारंटी ले सकते हैं कि कुंजी - अद्वितीय आइटम हैं इस समस्या से जुड़ी इसकी खामी - आपको कुछ अतिरिक्त जानकारी रखनी होगी जो आपको बिल्कुल भी ज़रूरत नहीं है। नक्शे के मूल्य trues या कुछ अन्य मूल्यों यह मायने नहीं रखता। आपको उनकी आवश्यकता क्यों है?

  2. पिछले नुकसान को हल करने के लिए आप JavaScript सरणियों का उपयोग करने पर विचार कर सकते हैं। लेकिन, आपको कुछ रैपर लिखना होगा ताकि एरे का व्यवहार सेट व्यवहार की तरह दिखेगा। इसके अलावा आपरेशन जो अनूठे आईडी से खोज लेंगे उसी प्रकार से हैशटबल के लिए धीमा होगा क्योंकि आपको किसी सरणी के सभी आइटमों के जरिए पुनरावृति करना होगा।

इसलिए, मुझे लगता है आपको सरणियों के लिए हैशटबल पसंद करना चाहिए, उदाहरण आप अन्य पदों में पा सकते हैं। लेकिन शायद आपको अपने डेटा संरचना को बदलने पर विचार करना चाहिए। unselers मूल्यों के साथ अद्वितीय कुंजी नहीं रखो यदि इसकी संभव हो अपने अद्वितीय आईडी कुछ वास्तविक वस्तुओं को इंगित करें जिनके लिए इन अद्वितीय आईडी उपयोग किए जाते हैं।

पी एस: एक और बात एरेज़ ऑब्जेक्ट्स वास्तव में हैं I नतीजतन, उन्हें हैशटबल / नक्शे के रूप में भी इस्तेमाल किया जा सकता है




Links