2017-02-06 9 views
-3

私はこのコードで助けが必要です。私は配列がコンボの1つに一致するかどうかチェックしたい(配列にはコンボの3つの数字が入っていなければならない)。一致する場合はtrueを返します。Javascriptこれらの配列を比較する方法

indexOfincludesを使用してコードを書き込もうとしましたが、正しく書き込めませんでした。手伝ってくれませんか?

const arr1 = [2,3,5,8,1]// comparing should return true, matches combos[6] 
const arr2 = [3,1,4] // comparing should return false 
const arr3 = [1,2,4,3] // comparing should return true ,matches combo[0] 
const arr4 = [9,7,8] // comparing should return true, matches combo[2] 
const combos = [[1,2,3],[4,5,6],[7,8,9],[1,5,9],[3,5,7],[1,4,7],[2,5,8],[3,6,9]] 
+2

正しく動作していないコードを投稿して、どこが間違っていたかを伝えることができればうれしいです。 –

+0

これらは実際にはマッチしません。つまり、マッチングが何を意味するのかを具体的に定義する必要があります。 –

+0

[JavaScriptで配列を比較する方法]の複製がありますか?(http://stackoverflow.com/questions/7837456/how-to-compare-arrays-in-javascript) –

答えて

0

私はいくつかのコールバックやその他もろもろを使用して、より良い方法があるかどうかわからないが、それはコンボを1つずつを行くと、それがテスト中にいた場合、個々の番号を確認する昔ながらの方法を動作します設定:

const arr1 = [2,3,5,8,1]; 
const arr2 = [3,1,4]; 
const arr3 = [1,2,4,3]; 
const arr4 = [9,7,8]; 
const combos = [[1,2,3],[4,5,6],[7,8,9],[1,5,9],[3,5,7],[1,4,7],[2,5,8],[3,6,9]]; 

function findCombo(combos, test) 
{ 
    for (var i=0; i<combos.length; i++) 
    { 
     var ok=true; 
     for (var k=0; k<combos[i].length; k++) 
      if (test.indexOf(combos[i][k])<0) { ok=false; break; } 
     if (ok) return true; 
    } 
    return false; 
} 

console.log(findCombo(combos, arr1)); 
console.log(findCombo(combos, arr2)); 
console.log(findCombo(combos, arr3)); 
console.log(findCombo(combos, arr4)); 
関連する問題