2017-09-06 2 views
3

Ich versuche zu überprüfen, ob alle Elemente eines Arrays (arr1, arr2, arr3 ...) in einem mehrdimensionalen Array (arrs) mit denen übereinstimmen ein gegebenes Array (randomArr), das beliebig lang sein kann. Dies ist, was ich mit so weit kam: (. Eine Endlosschleife (oder eine Schleife zu lange dauert) erkannt wurde, so hielten wir seine Ausführung)Inhalt des mehrdimensionalen Arrays gegen ein einzelnes Array prüfen

var randomArr = ['1','4','3']; 

    function check(arrA,arrB){ 
    for(i=0;i<arrA.length;i++){ 
     if(arrB.indexOf(arrA[i])==-1){return false;} 
    } 
    return true; 
    } 

    function superCheck(){ 
    var arr1 = ['1','2','3'] 
    , arr2 = ['4','5','6'] 
    , arr3 = ['7','8','9'] 
    , arr4 = ['1','4','7'] 
    , arr5 = ['2','5','8'] 
    , arr6 = ['3','6','9'] 
    , arr7 = ['1','5','9'] 
    , arr8 = ['3','5','7']; 
    var arrs = [arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8]; 

    for(i=0;i<arrs.length;i++){ 
     if(check(arrs[i],randomArr)){return true;} 
    } 
    return false; 
    } 

    console.log(superCheck()); 

Aber wenn ich versuche, es zu laufen bekomme ich diesen Fehler . Wie kann ich das schaffen?

+0

Sie haben einen Tippfehler in 'if (arr2.indefOf (arr1 [i])', sollte es sein 'if (arr2.indexOf (arr1 [i]) '. –

Antwort

0

ich einen Weg, wenn avery Element einer einzigen Array innerhalb eines anderen Array ist zu prüfen, gefunden. Dies ist die Lösung:

function check(superset,subset){ 
    return subset.every(function(val){ 
    return (superset.indexOf(val)>=0); 
    }) 
} 

Hier überprüfen Sie, ob alle Werte innerhalb der Untergruppe in der Obermenge vorhanden sind. Wenn eines der Elemente in der Teilmenge nicht vorhanden wäre, wäre der Index -1 und daher würde die Funktion false zurückgeben.

0

Ich würde es auf diese Weise tun:

var winning = [win1, win2, win3, win4, win5, win6, win7, win8], 
    xScore = 0, 
    oScore = 0, 
    scored = false, 
    xMarkedStr = xMarked.sort().join(''), 
    oMarkedStr = oMarked.sort().join(''); 

winning.some(win => { 
    var winStr = win.join(''); 
    if (xMarkedStr === winStr) { 
     xScore++; 
     scored = true; 
    } 
    if (oMarkedStr === winStr) { 
     oScore++; 
     scored = true; 
    } 
    return scored; 
}); 

console.log(xScore, oScore); 
Verwandte Themen