2017-09-21 3 views
0

Ich versuche hier mit meinem Code, was falsch zu verstehen:Switch-Anweisung nicht funktioniert wie erwartet

switch(arr){ 
case [0, 0]: 
    console.log("hereee") 
    return 0; 
case [0, 1]: 
    return 1; 
case [0, 2]: 
    return 2; 
case [1, 0]: 
    return 3; 
case [1, 1]: 
    return 4; 
case [1, 2]: 
    return 5; 
case [2, 0]: 
    return 6; 
case [2, 1]: 
    return 7; 
case [2, 2]: 
    return 8; 
default: 
    console.log("but heree") 
    return -1; 
     } 

Wie Sie sehen es Array prüft und sollte Nummer Rendite vorgesehen Array Werte zu verteidigen, zum Beispiel bei Ich gebe [1, 2] aus Ich erwarte, dass Ausgabe 5 ist, wenn ich [0, 0] übergebe, sollte es 0 sein, richtig? aber ich bekomme immer den Standardwert -1; Bitte hilf mir, den Grund dafür zu verstehen.

+1

Hier ist eine gute Methode. Entsprechend dieser Antwort werden Arrays immer falsch zurückgeben. https://stackoverflow.com/questions/17818127/using-an-array-through-a-switch-statement-in-javascript – h01001000

+0

weil das ist nicht, wie Sie Arrays vergleichen ... if ([0,0] == = [0,0]) würde nie funktionieren. Du wirst es neu überdenken müssen. – epascarello

+1

In JS-Arrays werden durch Referenz nicht durch Werte verglichen daher '[]! == []' und '[1, 2]! == [1, 2]' –

Antwort

6

Sie können switch nur für Primitive verwenden. JS verwendet === zum Vergleich in Switch-Anweisungen und [0,0]===[0,0] ist false.

Verwandte Themen