Не могу понять простое математическое уравнение - PullRequest
0 голосов
/ 05 сентября 2011

Что я хотел бы сделать, это заменить два оператора if одной математической формулой. Я не могу понять, как, поскольку математика никогда не была моей сильной стороной. Любой совет будет принята с благодарностью.

<script>

var x, y, z;
x = 200;
y = 100;
i = 0;

 while(z != y) {

    i++;

    if (x < y) z = x + i;
    if (x > y) z = x - i;

    document.write(z + "<br>");

}


</script>

Редактировать: реальный код выглядит следующим образом. Это не слишком красиво, я надеялся, что смогу сократить его до двух строк.

if (prevposX < newposX) posX = prevposX + animStep_;
if (prevposX > newposX) posX = prevposX - animStep_;
if (prevposY < newposY) posY = prevposY + animStep_;
if (prevposY > newposY) posY = prevposY - animStep_;

Edit:

Это было какое-то время, но я считаю, что оператор Modulus (%) помог бы мне. Теперь я перешел в библиотеку, чтобы сделать графику для меня, так что в итоге она мне не понадобилась.

1 Ответ

4 голосов
/ 05 сентября 2011

Вы можете использовать троичный оператор

z = x + ((x<y) ? i : -i)

Это предполагает, что когда x >= y, то вы хотите -i.Если вы хотите точно придерживаться своего оригинала, вам нужен второй троичный оператор, который выглядит немного беспорядочно:

z = x + ((x<y) ? i : ((x>y) ? -i : 0))

Честно говоря, может быть яснее просто оставить его в 2 строки с двумя операторами типа if, как выуже есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...