2014-09-27 3 views
-2

Это очень простой вопрос Javascript. Смотри, у меня есть цикл, который начинается, как этотдля петель и отрицательных чисел

for (i=0;i<=negativeorpositivenumber;i++) { 

Как следует из названия, переменная positiveornegativenumber может содержать либо положительное или отрицательное число. В результате, если указанная переменная положительна, цикл for работает. Если он отрицательный, цикл выходит немедленно, потому что i уже больше, чем negativeorpositivenumber.

Есть ли способ, не используя два для циклов (один для отрицательных и один для положительного), чтобы эта работа работала в обоих направлениях? Поэтому измените i < = to i> = и i ++ на i-- если переменная negativeorpositivenumber отрицательна?

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

EDIT: возможно, я должен был сделать это более ясным. Я не могу использовать абсолютное значение, потому что значение i действительно нужно считать вниз. Спасибо всем людям, которые были полезны и ответили, используя Math.abs.

+1

вы можете использовать JavaScript абс(), чтобы сделать су re всегда положителен в любом случае, например: для (i = 0; i <= abs (negativeorpositivenumber); i ++) { –

+0

Примите абсолютное значение. –

+0

Ваша цель получить правильное число итераций pf, или dpe фактическое значение i вопроса внутри цикла? –

ответ

2
for (i=0;i<=Math.abs(negativeorpositivenumber);i++) { 
    var original = negativeorpositivenumber > 0 ? i : -i; // optional 

Documentation here.

+0

Это все еще подсчитывается для отрицательных значений 'negativeorpositive'. – Guffa

+0

Добавлена ​​строка кода, чтобы исправить это. –

+0

Aha! Это то, что я искал. Работает не только цикл, но он также может быть изменен, поэтому я рассчитываю. Ближе всего, насколько я понимаю. Спасибо! – tomysshadow

0

Почему бы не использовать Абсолютное значение.

for(int i = 0; i < abs(positiveorneativenumber); i++) 
{ 
    //do stuff 
} 
+0

Согласно другим ответам, функция называется Math.abs в JS. Но он все еще не совсем отвечает на мой вопрос, потому что мне нужно отсчитывать. – tomysshadow

0

похож на приведенное выше замечание, но на основе знака числа, вы можете сделать то время цикла, как это:

var sign = negativeorpositivenumber? negativeorpositivenumber <0?-1:1:0 
while(i != 0){ 
    i -= sign; 
} 
+0

Вход в систему javascript из http://stackoverflow.com/questions/7624920/number-sign-in-javascript – gabber

0

Для петли в любом направлении, вы можете сначала проверить, где вы находитесь идя, и что границы являются:

var dir = negativeorpositivenumber > 0 ? 1 : -1; 
var min = negativeorpositivenumber > 0 ? 0 : negativeorpositivenumber; 
var max = negativeorpositivenumber > 0 ? negativeorpositivenumber : 0; 

for (var i = 0; i >= min && i <= max; i += dir) { 
    ... 
} 

Демо: http://jsfiddle.net/Guffa/cbh5c7rb/

Смежные вопросы