Prova per più casi in un interruttore, come un OR (||)

Come utilizzeresti un switch quando hai bisogno di testare a o b nello stesso caso?

 switch (pageid) { case "listing-page" || "home-page": alert("hello"); break; case "details-page": alert("goodbye"); break; } 

Puoi usare fall-through:

 switch (pageid) { case "listing-page": case "home-page": alert("hello"); break; case "details-page": alert("goodbye"); break; } 

Dal momento che le altre risposte spiegavano come farlo senza realmente spiegare il motivo per cui funziona:

Quando lo switch viene eseguito, trova la prima istruzione case corrispondente e quindi esegue ogni riga di codice dopo l’interruttore finché non raggiunge un’istruzione break o la fine switch (o un’istruzione return per lasciare l’intera funzione contenente). Quando omettete deliberatamente l’ break modo che anche il codice sotto il case successivo venga eseguito, si parla di fall-through . Quindi per il requisito dell’OP:

 switch (pageid) { case "listing-page": case "home-page": alert("hello"); break; case "details-page": alert("goodbye"); break; } 

Dimenticare di includere le dichiarazioni di break è un errore di codifica abbastanza comune ed è la prima cosa che dovresti cercare se il tuo switch non funziona come ti aspettavi. Per questa ragione alcune persone amano mettere un commento per dire “fall out” per chiarire quando le dichiarazioni di rottura sono state omesse di proposito. Lo faccio nel seguente esempio poiché è un po ‘più complicato e mostra come alcuni casi possono includere codice da eseguire prima che cadano:

 switch (someVar) { case 1: someFunction(); alert("It was 1"); // fall through case 2: alert("The 2 case"); // fall through case 3: // fall through case 4: // fall through case 5: alert("The 5 case"); // fall through case 6: alert("The 6 case"); break; case 7: alert("Something else"); break; case 8: // fall through default: alert("The end"); break; } 

Puoi anche (facoltativamente) includere un caso default , che verrà eseguito se nessuno degli altri casi corrisponde – se non includi una corrispondenza di default e nessuna di casi, allora non succede nulla. Puoi (facoltativamente) ricorrere al caso predefinito.

Quindi nel mio secondo esempio se someVar è 1 chiamerebbe someFunction() e quindi someFunction() quattro avvisi in quanto cade in più casi alcuni dei quali hanno allarmi sotto di essi. someVar è 3, 4 o 5 someVar due avvisi. Se someVar è 7 someVar “Qualcos’altro” e se è 8 o qualsiasi altro valore someVar “The end”.

È necessario creare due etichette case .

Il controllo passerà dalla prima etichetta alla seconda, quindi eseguiranno entrambi lo stesso codice.

Devi passare!

 switch (true) { case ( (pageid === "listing-page") || (pageid === ("home-page") ): alert("hello"); break; case (pageid === "details-page"): alert("goodbye"); break; } 

Dimentica l’ switch e break , lascia giocare con if . E invece di affermare

 if(pageid === "listing-page" || pageid === "home-page") 

creiamo diversi array con i casi e controlliamo con Array.prototype.includes ()

 var caseA = ["listing-page", "home-page"]; var caseB = ["details-page", "case04", "case05"]; if(caseA.includes(pageid)) { alert("hello"); } else if (caseB.includes(pageid)) { alert("goodbye"); } else { alert("there is no else case"); } 

Utilizzare le virgole per separare il caso

 switch (pageid) { case "listing-page","home-page": alert("hello"); break; case "details-page": alert("goodbye"); break; }