Диапазон FizzBuzz выше 1 не работает

Я сделал функцию, которая решает задачу Fizz Buzz. Теперь пользователь может заполнить 6 переменных.

Имена вместо Fizz и Buzz.. Диапазон (обычно от 0 до 100) и на каких числах он должен проверять, делится ли он.

for(var i = rangeone; i < rangetwo ; i++){
    console.log(i)
    if(i % divisiontwo === 0 && i % divisionone === 0){
        endarray.push(bothwords)
    }else if(i % divisiontwo === 0){
        endarray.push(secondword)
    }else if(i % divisionone === 0){
        endarray.push(firstword)
    }else{
        endarray.push(i)
    }
}

Пример

Проблема в. Если вы заполните диапазон, обычно вы заполните от 0 до 100. Если вы заполните от 1 до 100, это все еще работает ... но если вы заполните от 2 до 100 (или от 2+ до 250, это не имеет значения), это не имеет значения) работать больше.

Я не могу понять, ПОЧЕМУ это не так. По-видимому, он даже не запускает цикл for, если rangeone больше 1 for(i = rangeone; i ‹ rangetwo; i++)

Может кто-то объяснить это мне?

Заранее спасибо!


person Martijn Bos    schedule 23.02.2016    source источник
comment
Вы работаете со строками, а не с числами. "2" больше, чем "100", поэтому ваш цикл никогда не запускается.   -  person Frédéric Hamidi    schedule 23.02.2016
comment
ну, во-первых, почему вы присваиваете строки своим divisionx переменным? Вы занимаетесь МАТЕМАТИКОЙ, а это значит, что вы должны присваивать числа...   -  person Marc B    schedule 23.02.2016
comment
Но почему это работает, например, с 0 и 100? а теперь с 2 и 100? Там не должно быть разницы, если он не принимает строки в любом случае. Правильно?   -  person Martijn Bos    schedule 23.02.2016
comment
Неправильный. Некоторые операторы JavaScript преобразуют строки в числа, но не все (особенно операторы сравнения).   -  person Frédéric Hamidi    schedule 23.02.2016
comment
Ах окей. Спасибо за комментарий. Это ценится! Я проведу небольшое исследование по этому поводу .. Новичок во всем этом и определенно иногда просматриваю простые вещи: D   -  person Martijn Bos    schedule 23.02.2016


Ответы (1)


for (i = parseInt(rangeone); i < parseInt(rangetwo); i++) {

Преобразуйте входные строки в числа.

person Ron Brogan    schedule 23.02.2016
comment
Хм окей. Кажется, это решает. Благодарю вас! Тем не менее, я все еще ошеломлен тем фактом, что я отправлял строки ... но он принимал 1 и 2 как диапазоны - person Martijn Bos; 23.02.2016