Opérateurs Ternaires Multiples

J'ai besoin d'un peu d'aide syntaxique avec un opérateur ternaire qui m'aidera à mettre les bonnes icônes de marqueur sur ma bonne carte.J'ai trois zones 0,1 et 2 qui ont des icônes uniques 0, 1 et 2.

J'avais juste deux zones, donc cet opérateur ternaire fonctionnait bien;

icon: (area == 1) ? icon1: icon0,

Maintenant, je dois ajouter une troisième icône supplémentaire (icon2) pour area2.

J'ai essayé diverses méthodes mais je n'arrive tout simplement pas à le faire correctement.

26
demandé sur Deduplicator 2011-10-13 20:49:48

5 réponses

La syntaxe serait:

icon: (area == 1) ? icon1 : (area == 2) ? icon2 : icon0,

Mais cela commence à se compliquer. Vous pourriez bien être mieux de simplement créer une fonction pour faire ce travail à la place:

icon: getIcon(area),

...

function getIcon(area) {
  if (area == 1) { 
    return icon1; 
  } else if (area == 2) { 
    return icon2; 
  }

  return icon0;
}
42
répondu Justin Ethier 2011-10-13 16:53:14

Que diriez-vous de:

icon: [ icon0, icon1, icon2 ][area],
18
répondu Pointy 2011-10-13 16:52:32

Que diriez-vous d'un littéral d'objet.

icons = {
    0: icon0,
    1: icon1,
    2: icon2
}

icon = icons[area];
8
répondu Bruno 2011-10-13 20:08:14

Manière Très simple

var test1 = false
var test2 = true
var test = test1 ? test1 : test2 ? test2 : 'some default value'
7
répondu Sushil Dhayal 2017-04-20 10:42:03
icon: (area == 0) ? icon0 : (area == 1) ? icon1 : icon2,
2
répondu John Hartsock 2011-10-13 16:52:18