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)
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)
var icon = (area == 0) ? icon0 : (area == 1) ? icon1 : icon2;
Run Code Online (Sandbox Code Playgroud)