मेरे पास दो पूर्णांक सरणी हैं जिनमें संख्यात्मक मान होते हैं। मैं दोनों सूचियों को देखना चाहता हूं और सूचियों के बीच समानता (या कमी) की जांच करना चाहता हूं। अर्थात। मैं सरणी के माध्यम से पुनरावृत्त करना चाहता हूं और उन वस्तुओं को ढूंढता हूं जो दोनों सूचियों में दिखाई देते हैं, जबकि एक अलग कार्य में मैं सरणी के माध्यम से जाना चाहता हूं और पहले आइटम में हूं और दूसरे में नहीं।जावास्क्रिप्ट: कुशलतापूर्वक दो पूर्णांक सरणी की तुलना करें
ऐसा करने का स्पष्ट तरीका छोरों के लिए नीडिंत है:
var containedInFirst = false;
for (var primaryID = 0; primaryID < PrimaryArray.length; primaryID++) {
containedInFirst = false;
for (var secondaryID = 0; secondaryID < SecondaryArray.length; secondaryID++) {
if (PrimaryArray [primaryID] === SecondaryArray[secondaryID]) {
containedInFirst = true;
break;
}
}
//Do some more stuff based on the value of containedInFirst here
}
लेकिन दिया सूचियों सैकड़ों या रिकॉर्ड के हजारों हो सकता है यह काफी itteration और प्रोसेसर गहन का एक सा है। इसलिए मैं सोच रहा था कि उपरोक्त कोड को निष्पादित करने का एक और अधिक प्रभावी तरीका है? न केवल वास्तविक खोज, बल्कि मूल्यों के कंटेनर के रूप में एक इंटीजर सरणी से कुछ अधिक कुशल, या सामग्री को पार करने और तुलना करने के लिए लूप के लिए नेस्टेड का उपयोग न करें।
अधिक कुशल या सुरुचिपूर्ण समाधानों पर कोई विचार?
केवल एक सुझाव =) एक WebWorker में उस कार्य को चलाते हैं आपके ब्राउज़र उन्हें –
आप व्यवस्था बनाए रखने के लिए क्या है समर्थन करते हैं: यहाँ एक एक लाइनर है? सरणी क्रमबद्ध हैं? क्या आपके पास सरणी में बड़े पूर्णांक हैं? – Lauri