Javascript 2d array indexOf -
मेरे पास इस तरह एक 2d सरणी है:
var arr = [[2,3 ], [5.8], [1,1], [0,9], [5.7]]; प्रत्येक सूचकांक कुछ तत्वों के निर्देशांक युक्त एक आंतरिक सरणी को संग्रहित करता है।
मैं जांचने के लिए कैसे उपयोग कर सकता हूं कि नए निर्देशित सेट के सेट पहले से ही आगमन ? मैं arr में धकेलना चाहता हूं यदि केवल समन्वय एक डुप्लिकेट नहीं है। यह मेरा प्रयास है जो काम नहीं करता:
यदि (Arr.indexOf ([x, y]) == -1) {arr.push ([x, y]); } ऐसा लगता है कि indexOf () 2d arrays के लिए काम नहीं करता है ...
आप जटिल ऑरेंज करने के लिए indexOf का उपयोग नहीं कर सकते हैं (जब तक कि आप इसे हर चीज स्ट्रिंग में समन्वयित करने के क्रमबद्ध नहीं करते), तो आपको खोज के लिए लूप (या फिर) का उपयोग करना होगा यह मानते हुए कि उस सरणी में समन्वय करें, आप सरणी के प्रारूप को जानते हैं (इस मामले में यह 2 डी है)।
var arr = [[2,3], [5,8], [1 , 1], [0,9], [5.7]]; Var कॉर 1 = [0, 9]; Var कॉओर 2 = [1, 2]; (If i 0] & amp; amp; सरणी [i] [1] == आइटम [1]) {वापस सच; // इसे मिला}} वापसी झूठी; // नहीं मिला} // test coor1 console.log ("क्या यह वहां है? [0, 9]", आईआईटीम इनअरे (arr, coor1)); // True // test coor2 console.log ("क्या यह वहाँ है? [1, 2]", आईआईटीम इनअरे (arr, coor2)); // गलत // तब अगर (! आईआईटीम इनअरे (एआर, [x, वाई])) {arr.push ([x, y]); } यह कार्यान्वयन छोरों और हर मान को पकड़ लेता है यदि आप प्रदर्शन के बारे में ध्यान रखते हैं तो आप पहले जटिल सूचकांक से मूल सरणी को छांटने और पहले सूचकांक पर द्विआधारी खोज का उपयोग कर अधिक जटिल चीजें कर सकते हैं।
एक अन्य तरीका ऑब्जेक्ट में प्रत्येक आइटम के पहले निर्देशांक को बाइट (जैसे एक हैशटेबल) और खोज टाइम्स को कम करने के लिए उन प्रत्येक बाल्टी में दूसरा मान बाल्टी है; अधिक जानकारी यहां।
अन्यथा यह शायद आपके लिए क्या आवश्यक है।
Comments
Post a Comment