Несколько Тернарных Операторов - PullRequest
29 голосов
/ 13 октября 2011

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

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

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

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

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

Ответы [ 6 ]

49 голосов
/ 13 октября 2011

Синтаксис будет:

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;
}
21 голосов
/ 13 октября 2011

Как насчет:

icon: [ icon0, icon1, icon2 ][area],
8 голосов
/ 20 апреля 2017

Очень простой способ

Если ваш объект такой:

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"
8 голосов
/ 14 октября 2011

Как насчет объекта литерал.

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

icon = icons[area];
2 голосов
/ 13 октября 2011
icon: (area == 0) ? icon0 : (area == 1) ? icon1 : icon2,
0 голосов
/ 02 мая 2019

Для тех, кто смущен множественным троичным синтаксисом (как я), он выглядит так:

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

Вы можете добавить столько условий, сколько захотите.

Вы можетечитать дальше https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

...