2017-10-09 10 views
0

私は、winingNumbersという配列の配列を持っています。他の配列(userOneNumersとuserTwoNumers)をテストして、winingNumbersのネストされた配列のすべての数値が含まれているかどうかを調べる必要があります。配列にJavaScriptを持つ他のネストされた配列の番号がすべて含まれているかどうかを確認しますか?

const userOneNumers = [1,2,4,5]; 
const userTwoNumers = [1,2,3,6]; 

const winingNumbers = [ 
    [1,2,3], 
    [4,5,6] 
]; 

この例では、userOneNumersはfalseを返しますが、userTwoNumersはtrueを返す必要があります。

trueを返すには、配列に1,2,3または4,5,6のいずれかのALLを含める必要があります。配列の両方に1,2,4などの数がある場合は、falseを返す必要があります。

また、テストする配列には他の数字、たとえば8,9,1,2,3,7が含まれていても、それでもtrueを返す必要があります。

+0

基本的には2つの配列の比較です:https://stackoverflow.com/questions/7837456/how-to-compare-arrays-in-javascript – Andrey

+0

なぜ新しい配列を作成していないし、異なる数字を挿入し、並べ替えてコンパイルしますか? – StuiterSlurf

+0

@Andrey正確には、私の質問を更新してうまくいけば、それをもっと明確にすることはできません。 – Evans

答えて

2

事前に同じ長さの配列をチェックしてチェックしてください。

function check(a, b) { 
 
    var bb = new Set(b); 
 
    return a.some(aa => aa.length === b.length && aa.every(aaa => bb.has(aaa))); 
 
} 
 

 

 
const userOneNumers = [1, 2, 4, 5]; 
 
const userTwoNumers = [1, 2, 3]; 
 
const winingNumbers = [[1, 2, 3], [4, 5, 6]]; 
 

 
console.log(check(winingNumbers, userOneNumers)); // false 
 
console.log(check(winingNumbers, userTwoNumers)); // true

quesionの編集後の編集は、長さのチェックなしで、単に与えられた値に対して内部配列を確認してください。

function check(a, b) { 
 
    var bb = new Set(b); 
 
    return a.some(aa => aa.every(aaa => bb.has(aaa))); 
 
} 
 

 

 
const userOneNumers = [1, 2, 4, 5]; 
 
const userTwoNumers = [1, 2, 3, 6]; 
 
const winingNumbers = [[1, 2, 3], [4, 5, 6]]; 
 

 
console.log(check(winingNumbers, userOneNumers)); // false 
 
console.log(check(winingNumbers, userTwoNumers)); // true

+0

質問の編集を見ると、長さをテストしてはならないようです。テストされた配列は、勝利配列のスーパーセットになることができます。 –

+0

@ Mark_M、右、その要件の編集部分を追加しました。 –

関連する問題