Множественные тернарные операторы
Мне нужна небольшая синтаксическая помощь с тройным оператором, который поможет мне поместить правильные значки маркеров на мою хорошую карту. У меня есть три области 0,1 и 2, которые имеют уникальные значки 0, 1 и 2.
У меня было всего две области, поэтому этот тернарный оператор работал нормально,
icon: (area == 1) ? icon1: icon0,
Теперь мне нужно добавить дополнительный третий значок (значок2) для области2.
Я пробовал различные методы, но просто не могу понять, как это правильно.
Ответы
Ответ 1
Синтаксис:
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;
}
Ответ 2
Как насчет:
icon: [ icon0, icon1, icon2 ][area],
Ответ 3
Как насчет литерала объекта.
icons = {
0: icon0,
1: icon1,
2: icon2
}
icon = icons[area];
Ответ 4
Очень простой способ
Если ваш объект такой:
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
icon: (area == 0) ? icon0 : (area == 1) ? icon1 : icon2,
Ответ 6
Для любого, кто запутался в множественном троичном синтаксисе (как я), это выглядит так:
var yourVar = condition1 ? someValue
: condition2 ? anotherValue
: defaultValue;
Вы можете добавить столько условий, сколько захотите.
Вы можете прочитать дальше на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator