0

好的,所以我正在尝试编写一些代码来确定静态数组中的值是正数、负数还是等于零。

因此数组被填充,我将使用 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;
}
4

2 回答 2

3

您需要遍历数组,并检查每个元素。Aswitch在这里不是正确的工具,它不会做你想做的事。 switches 可能是一种做法if/else,但它们只检查相等性,而不是小于/大于。

var str = 'a'

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

这会发出警报1

如果 的值str与其中一个case语句匹配(您不能在 中使用<或),则代码将运行。否则会运行。它们不是“标签”,因此检查s 中的值是没有意义的。>casedefualtcase

您需要循环,然后只需使用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");
}
于 2012-06-28T19:47:56.470 回答
1

你比较字符串和数字。数组中的数字被 "" 包围:这使字符串。您应该在您的阵列中删除这些“”或在您的开关中添加“”。

于 2012-06-28T19:41:35.733 回答