Впервые увидел такие троичные выражения:

var somevar = b1 ? b2 ? b3 : b4 : b5 ? b6 : b7 ? b8 : b9 ? b10 : b11

Трудно понять и преобразовать его в:

if (b1) {
} else if (bx) {
}

Я искал везде и не могу найти ответ на этот вопрос.

4
AamirR 19 Дек 2015 в 14:59

4 ответа

Лучший ответ

Просто добавьте скобки.

var somevar = (b1 ? (b2 ? b3 : b4) : (b5 ? b6 : (b7 ? b8 : (b9 ? b10 : b11))))

Т.е.

if (b1) {
  if (b2) {
    b3
  } else {
    b4
  }
} else {
  if (b5) {
    b6
  } else {
    if (b7) {
      b8
    } else {
      if (b9) {
        b10
      } else {
        b11
      }
    }
  }
}

Или сделать его короче.

if (b1) {
  if (b2) {
    b3
  } else {
    b4
  }
} else if (b5) {
  b6
} else if (b7) {
  b8
} else if (b9) {
  b10
} else {
  b11
}

Начните с крайнего правого угла. всякий раз, когда вы найдете a ? b : c, добавьте круглые скобки вокруг него.

Например:

 a ?  b ? c : d  : e

 a ? (b ? c : d) : e

(a ? (b ? c : d) : e)
8
Louay Alakkad 19 Дек 2015 в 12:41

Ясно, что я бы предложил пытать человека, который написал такой код, но вместо этого вы могли бы написать так:

var somevar;

if (b1) {
    if (b2) {
        somevar = b3;
    } else {
        somevar = b4;
    }
} else {
    if (b5) {
        somevar = b6;
    } else {
        if (b7) {
            somevar = b8;
        } else {
            if (b9) {
                somevar = b10;
            } else {
                somevar = b11;
            }
        }
    }
}
1
TwoStraws 19 Дек 2015 в 12:18

Вот мое решение:

if (b1) {
    if (b2) {
        b3
    } else {
        b4
    }
} else if (b5x) {
    b6
} else if (b7) {
    b8
} else if (b9) {
    b10
} else {
    b11
}
0
AamirR 19 Дек 2015 в 14:15
Firstly convert it into parenthesis: 
(b1 ? 
     (b2 ? b3 :  b4 ) :   (b5 ? 
                               b6 : (b7 ? 
                                         b8 : (b9 ? b10 : b11) 
                                     )
                            )
  )

Затем в соответствии с этим используйте следующий код:

  var somevars;
  if(b1)
  {
    if(b2) somevars=b3
    else somevars=b4
  }
  else 
  {
    if(b5) 
       somevars=b6
    else 
    {
      if(b7) 
      {
        somevars=b8
      }
      else  
      {
        if(b9) somevars=b10
        else somevars=b11
      }
    }
  }
2
Sundar Singh 19 Дек 2015 в 12:26