2017-03-23 2 views
0

Ich führe eine 'for' -Schleife, um zu überprüfen, ob die Elemente im winOptions Array im oneNums Array sind. Jedes Mal, wenn ich die Eigenschaft indexOf verwende, sendet es jedoch -1 zurück, auch wenn sich die Nummer im Array oneNums befindet. Ist es möglich, dass es zurückgibt, weil ['1','2'] ist das [1,2] anders? Wie kann ich das beheben?Warum gibt es '-1' anstelle des Index des Indexes zurück jQuery

Ich habe diese Variablen:

var oneNums = []; 
var winOptions = [[1,2,3],[4,5,6],[7,8,9],[1,5,9],[3,5,9],[1,4,7],[2,5,8],[3,6,9]]; 
var a; 

Und diese jQuery-Funktion:

$('.btn-xo').click(function(){ 
    if (turn === 'one'){ 
    $(this).text(pickOne); 
    $(this).prop('disabled', true); 
    oneNums.push($(this).val()); 
    oneNums.sort(function(a, b){ 
     return a - b; 
    }); 
    for(var i = 0; i < winOptions.length; i++){ 
     for(var j = 0; j < winOptions[i].length; j++){ 
     a = oneNums.indexOf(winOptions[i][j]); 
     if (a === -1){ 
      p1 = []; 
      break; 
     } else { 
      p1.push(oneNums[a]); 
      console.log('aca'); 
     } 
     } 
    } 
    console.log(a); 
    turn = 'two'; 
    count += 1;   
    } 
+0

Können Sie ein Snippet hinzufügen, da Ihr Code einige fehlende vars – Harsheet

+0

hat @Harshitet geben Sie mir eine Sekunde. Ich werde es tun. –

+1

'oneNums.push (parseInt ($ (this) .val(), 10));' kann prüfen, es zu analysieren? – Jai

Antwort

2

indexOf Zeichenfolge mit der Nummer fehl. Also, Änderung number zu string

Erste convert Nummer String, mit .toString()

for(var i = 0; i < winOptions.length; i++){ 
     for(var j = 0; j < winOptions[i].length; j++){ 
     a = oneNums.indexOf((winOptions[i][j]).toString()); 
     if (a === -1){ 
      p1 = []; 
      break; 
     } else { 
      p1.push(oneNums[a]); 
      console.log('aca'); 
     } 
     } 
    } 

Schauen Sie sich diese beiden Beispiele,

['1','2'].indexOf(1); o/p ===> -1

['1','2'].indexOf((1).toString()); o/p ===> 0

+0

Genau das, was ich gefragt habe. Es ist also anders als "1" und "1". Vielen Dank! –

+0

@DiegoRios, ja Ihr Verdacht ist richtig, das ist der Schuldige. :) – Sravan

Verwandte Themen