Multiple Ternary Operators

2019-01-17 03:33发布

问题:

I need a bit of syntax help with a ternary operator which will help me to put the correct marker icons on to my good map.I have three areas 0,1 and 2 which have unique icons 0, 1 and 2.

I used to have just two areas so this ternary operator worked fine;

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

Now I need to add an additional third icon (icon2) for area2.

I've tried various methods but just can't seem to get it right.

回答1:

The syntax would be:

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

But this is starting to get complicated. You may well be better off just creating a function to do this work instead:

icon: getIcon(area),

...

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

  return icon0;
}


回答2:

How about:

icon: [ icon0, icon1, icon2 ][area],


回答3:

How about an object literal.

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

icon = icons[area];


回答4:

Very simple way

var test1 = false
var test2 = true
var test = test1 ? test1 : test2 ? test2 : 'some default value'


回答5:

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