web-dev-qa-db-fra.com

comment comparer deux chaînes en javascript si condition

J'ai du mal à me rappeler comment comparer ces deux chaînes dans une instruction if. Ce que je dois faire, c'est vérifier si ma variable compare est égale à page1 ou page2 sinon, passez à l'instruction else. 

var compare = "page3";

if (compare === "page1" || "page2") {
  document.body.innerHTML = "github url";
} else {
  document.body.innerHTML = "non-github url";
}

1
Michael Schwartz

Vous pouvez vérifier chaque option.

if (compare === "page1" || compare === "page2") {

Ou vous pouvez utiliser un tableau et vérifier avec un quantificateur existentiel tel que Array#some against, comme

if (["page1", "page2"].some(a => a === compare)) {

var compare = "page3";

if (compare === "page1" || compare === "page2") {
    document.body.innerHTML = "github url";
} else {
    document.body.innerHTML = "non-github url";
}

2
Nina Scholz

Chaque fois que vous avez plusieurs tâches à archiver dans une condition if, vous devez écrire chaque condition séparément de l'autre. Donc, le test doit être écrit comme:

// If compare equals "page1" OR compare equals "page2"
if (compare === "page1" || compare === "page2") {

Lorsque vous avez une seule variable pouvant contenir de nombreuses valeurs différentes, l'utilisation d'une instruction switch peut s'avérer plus logique et plus efficace, car elle n'a qu'à rechercher la valeur de la variable une fois. 

En outre, rappelez-vous que les chaînes sont des littéraux et que "page1" n'est pas égal à "Page1" . Pour effectuer une comparaison qui ne respecte pas la casse, vous pouvez forcer toutes les valeurs à mettre les majuscules en minuscule (ou majuscules) en premier, puis les comparer les unes aux autres (comme indiqué ci-dessous):

switch (compare.toLowerCase()) {
    case "page1" :
        // Do work here
        break;
    case "page2" :
        // Do work here
        break;
    case "page3" :
        // Do work here
        break;
    default :
        // Do work here
        break;
}
1
Scott Marcus