2012-06-28 1 views
0

Итак, я пытаюсь написать код, чтобы определить, являются ли значения в статическом массиве положительными, отрицательными или равными нулю.Javascript - определение того, является ли значение в массиве положительным, отрицательным (использовать переключатель)

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

Вот код, который я делал до сих пор.

Сохраните ответы, касающиеся использования переключателей! Заранее спасибо.

Примечание: Я преподаю себе JS, поэтому я новичок в этом. Вот мой код:

// JavaScript Document 

var numbers=new Array(); 
numbers[0]="1";  
numbers[1]="2"; 
numbers[2]="3"; 
numbers[3]="-1";  
numbers[4]="-2"; 
numbers[5]="-3"; 
numbers[6]="0"; 



switch (numbers) { 
    case "positive": 
     if (numbers>0) 
     {alert("DERP")}; 
    break; 
    case "negative": 
     if (numbers<0) 
     {alert("NO DERP")}; 
    break; 
    case "zero": 
     if (numbers==0) 
     {alert("STILL DERP")}; 
    break; 
} 
+2

Подсказка: при взгляде на каждый элемент требуется, чтобы вы пересекали массив. –

+0

простите меня, если это неверно, но это очень похоже на домашнюю работу. : P В любом случае попробуйте посмотреть, как [switch/cases] (https://developer.mozilla.org/en/JavaScript/Reference/Statements/switch) структурированы в js, а затем попробуйте только одно значение. затем попробуйте [сделать цикл для него] (https://developer.mozilla.org/en/JavaScript/Reference/Statements/for). –

+0

Зачем вам нужно использовать условие переключения? Цикл - это нормальный способ проверить это. – j08691

ответ

1

Вы сравниваете строки и цифры. Цифры в вашем массиве окружены символом "": это строка. Вы должны удалить эти «» в своем массиве или добавить «» в свой коммутатор.

+0

Упс, да я просто удалил их. Все равно не сработает. Глядя на другие комментарии от других сейчас. Да, я знаю, что для этого нужно использовать массив. Мне просто интересно, можно ли переключиться на это. –

3

Вам нужно пройти через массив и проверить каждый элемент. A switch здесь не самый подходящий инструмент, он не будет делать то, что вы хотите. switch es может быть способом делать if/else, но они проверяют только на равенство, не менее/больше.

var str = 'a' 

switch(str){ 
    case 'a': 
     alert(1); 
     break; 
    case 'b': 
     alert(2); 
     break; 
    default: 
     alert(0); 
     break; 
} 

Это предупреждение 1.

Если значение str соответствует одному из case заявлений (вы не можете использовать < или > в case), код будет работать. В противном случае будет запущен defualt. Они не являются «метками», поэтому проверка значения внутри case s не имеет смысла.

Вам необходимо установить петлю, а затем использовать только if/else.

for(var i=0, len=numbers.length; i<len; i++){ 
    var num = numbers[i]; 

    if(num > 0) alert('DERP'); 
    else if(num < 0) alert("NO DERP"); 
    else alert("STILL DERP"); 
} 
Смежные вопросы