多个三元运算符

时间:2011-10-13 16:49:48

标签: javascript ternary-operator

我需要一个三元运算符的语法帮助,这将帮助我将正确的标记图标放到我的好地图上。我有三个区域0,1和2,它们具有唯一的图标0,1和2。 / p>

我曾经只有两个区域,所以这个三元运算符工作得很好;

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

现在我需要为area2添加一个额外的第三个图标(icon2)。

我尝试了各种方法,但似乎无法正确使用。

6 个答案:

答案 0 :(得分:46)

语法为:

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

但这开始变得复杂。你可能最好只创建一个函数来代替这个工作:

icon: getIcon(area),

...

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

  return icon0;
}

答案 1 :(得分:21)

怎么样:

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

答案 2 :(得分:8)

对象文字怎么样?

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

icon = icons[area];

答案 3 :(得分:8)

非常简单

如果您的对象是这样的:



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"




答案 4 :(得分:2)

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

答案 5 :(得分:0)

对于任何对多重三元语法感到困惑的人(就像我以前一样),它都是这样的:

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

您可以添加任意多个条件。

您可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator上进一步阅读