多个三元运算符

Sam*_*Sam 33 javascript ternary-operator

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

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

icon: (area == 1) ? icon1: icon0,
Run Code Online (Sandbox Code Playgroud)

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

我尝试了各种方法,但似乎无法做到正确.

Jus*_*ier 52

语法是:

icon: (area == 1) ? icon1 : (area == 2) ? icon2 : icon0,
Run Code Online (Sandbox Code Playgroud)

但这开始变得复杂起来.你可能最好只创建一个函数来完成这项工作:

icon: getIcon(area),

...

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

  return icon0;
}
Run Code Online (Sandbox Code Playgroud)


Ada*_*dam 27

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

var yourVar = condition1 ? someValue
            : condition2 ? anotherValue
            : defaultValue;
Run Code Online (Sandbox Code Playgroud)

您可以添加任意数量的条件。

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


Poi*_*nty 22

怎么样:

icon: [ icon0, icon1, icon2 ][area],
Run Code Online (Sandbox Code Playgroud)

  • `['A', 'B', 'C'][area]` 那么如果 area = 2,`C` 将是值吗?我什至从未想过同时定义和设置数组索引。 (3认同)
  • +1-只要区域0始终映射到图标0,这就是最简洁的方法... (2认同)
  • @JM-AGMS它只是一个简单的数组索引操作.`area`变量包含一个数字. (2认同)

Bru*_*uno 10

对象文字怎么样?

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

icon = icons[area];
Run Code Online (Sandbox Code Playgroud)


小智 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"
Run Code Online (Sandbox Code Playgroud)


Joh*_*ock 5

var icon = (area == 0) ? icon0 : (area == 1) ? icon1 : icon2;
Run Code Online (Sandbox Code Playgroud)