2016-05-02 60 views
6

我需要檢查數組中的所有項目是否可以在另一個數組中找到。也就是說,我需要檢查一個數組是否是另一個數組的子集。檢查是否所有項目都可以在另一個數組中找到

例子:

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

上面這兩個數組比較爲array所有項目都可以在otherArray發現應返回true。

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

這兩個數組上面比較應該在array的項目之一返回false不能otherArray找到。

我試圖在for循環中使用indexOf方法,但沒有成功。 我希望有人能幫助我。 :)

+1

你事先知道,如果陣列總是排序? –

+0

如果'otherArray'很大,最好將它轉換爲鍵值爲元素的對象。 – 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;

相關問題