2017-02-06 2 views
-3

Мне нужна помощь с этим кодом. Я хочу проверить, соответствует ли массив одной из комбо (массив должен содержать 3 числа, которые есть у одной из комбо). Если совпадения должны быть возвращены true.Javascript, как сравнить эти массивы

Я попытался написать код, используя indexOf и includes, но я не мог написать его правильно. Не могли бы вы мне помочь?

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

Я не уверен, если есть лучший способ, используя некоторую функцию обратного вызова и этажерку, но он работает по старинке способ идти через комбо один за другим, а затем проверка каждого отдельного номера, если это в тесте комплект:

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)); 
Смежные вопросы