Multiple Ternary Operators

旧时模样 提交于 2019-12-17 17:54:28

问题


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

If your object is like this:

var obj = {
  x: true,
  y: {
    xy: 'some value'
  }
}

var result = obj ? obj.y ? obj.y.xy ? obj.y.xy : 'N/A' : 'N/A' : 'N/A'

console.log(result) // "some value"



回答5:


For anyone that's confused about the multiple ternary syntax (like I was), it goes like this:

var yourVar = condition1 ? someValue
            : condition2 ? anotherValue
            : defaultValue;

You can add as many conditions as you like.

You can read up further on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator




回答6:


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


来源:https://stackoverflow.com/questions/7757549/multiple-ternary-operators

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!