Подтвердить что ты не робот

Множественные тернарные операторы

Мне нужна небольшая синтаксическая помощь с тройным оператором, который поможет мне поместить правильные значки маркеров на мою хорошую карту. У меня есть три области 0,1 и 2, которые имеют уникальные значки 0, 1 и 2.

У меня было всего две области, поэтому этот тернарный оператор работал нормально,

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

Теперь мне нужно добавить дополнительный третий значок (значок2) для области2.

Я пробовал различные методы, но просто не могу понять, как это правильно.

4b9b3361

Ответ 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