2016-05-02 9 views
6

配列内のすべての項目が別の配列内にあるかどうかを確認する必要があります。つまり、ある配列が別の配列のサブセットであるかどうかを確認する必要があります。すべての項目が別の配列で見つかるかどうかチェックする

例:array内のすべての項目がotherArrayに見出すことができるようにtrueを返す必要があり、上記これら二つの配列を比較

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

array内の項目の一つとしてfalseを返すべきである上、これら二つの配列を比較する

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

otherArrayに見出すことができません。

私はindexOfメソッドをforループの中で成功せずに使用しようとしました。 誰かが私を助けてくれることを願っています。 :)

+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;

関連する問題