2016-05-02 5 views
6

मुझे यह जांचने की ज़रूरत है कि किसी सरणी में सभी आइटम किसी अन्य सरणी के भीतर पाए जा सकते हैं या नहीं। यही है, मुझे यह जांचने की ज़रूरत है कि एक सरणी किसी अन्य सरणी का सबसेट है या नहीं।जांचें कि क्या सभी आइटम किसी अन्य सरणी में पाए जा सकते हैं

उदाहरण:

var array = [1, 2, 5, 7]; 
var otherArray = [1, 2, 3, 4, 5, 6, 7, 8]; 

ऊपर इन दो सरणियों की तुलना करना सही लौटना चाहिए के रूप में array में सभी आइटम otherArray में पाया जा सकता।

var array = [1, 2, 7, 9]; 
var otherArray = [1, 2, 3, 4, 5, 6, 7, 8]; 

इन दो सरणियों की तुलना करने से array की एक वस्तु के रूप में झूठी लौटना चाहिए otherArray में नहीं पाया जा सकता है।

मैंने सफलता के बिना लूप के अंदर indexOf विधि का उपयोग करने का प्रयास किया है। मुझे उम्मीद है कि कोई मेरी मदद कर सकता है। :)

+1

अगर सरणियों हमेशा हल कर रहे हैं आप समय से आगे पता है? –

+0

यदि 'अन्यअरे' बड़ा है, तो इसे किसी ऑब्जेक्ट में परिवर्तित करना सबसे अच्छा होगा जिसका कुंजी तत्व हैं। – Barmar

उत्तर

11

उपयोग Array.prototype.every:

हर() विधि परीक्षण है कि क्या सरणी में सभी तत्वों परीक्षण प्रदान की समारोह द्वारा कार्यान्वित गुजरती हैं।

var array = [1, 2, 7, 9]; 
 
var otherArray = [1, 2, 3, 4, 5, 6, 7, 8]; 
 

 
var isSubset = array.every(function(val) { 
 
    return otherArray.indexOf(val) >= 0; 
 
}) 
 

 
document.body.innerHTML = "Is array a subset of otherArray? " + isSubset;

संबंधित मुद्दे