【问题标题】:Using a Javascript switch statement, how can I count the number of elements (numbers only) in an array? [closed]使用 Javascript switch 语句,我如何计算数组中元素的数量(仅限数字)? [关闭]
【发布时间】:2014-01-01 18:44:45
【问题描述】:

我正在尝试使用函数中的 switch 语句 计算数组中元素的数量(仅限数字)。老实说,我不确切知道这段代码会是什么样子。但这就是我目前所拥有的

<script language="JavaScript">
//an array of numbers
var number = [1,"o",2,3,"a",0];
//a switch statement

switch (number) {
    //Not sure what would go here....

    break;
}
  //display result of count
alert(count)
</SCRIPT>

【问题讨论】:

  • 为什么要在这里使用 switch 语句?
  • 这是一种锻炼吗?
  • 这是我在这里看到的最糟糕的问题之一,人们在解决方案中争论不休,并且已经有 -14 票。不要给这个人带来困难,用它来教育而不是嘲笑。
  • 我还没有阅读所有关于答案的 cmets,但是@user3097967 你到底为什么必须使用 switch 语句来做到这一点?
  • 我投反对票只是因为 OP 拒绝说明为什么需要切换。

标签: javascript arrays switch-statement


【解决方案1】:

编辑:好的!一个开关!让我们开始吧!

var count = 0;
for(var i = number.length; i--;){
    switch(true){
        case typeof number[i] == 'number':
            count++;
    }
}
alert(count);

【讨论】:

  • 然后...switch在哪里?
  • 嗯...为什么不打开typeof number[i]? :-)
  • 这样更有趣:D
  • 宾果游戏!谢谢nderscore :)
  • @user3097967 你为什么不喜欢马特的回答?
【解决方案2】:

我认为目前的答案不是很紧凑。

这是我的看法,使用.reduce:

var number = [1,"o",2,3,"a",0];

var count = number.reduce(function(accum,cur){
    return accum+(typeof cur === "number");
});

这是使用所需的switch 的镜头

var number = [1,"o",2,3,"a",0];

var count = number.reduce(function(accum,cur){
    return accum+(typeof cur === "number");
    switch(true){} // this switch's name is Alfred, after Batman's butler
});

【讨论】:

    【解决方案3】:

    使用 switch 语句

    如果你坚持:

    var count = 0;
    for( var i=0 ; i<number.length ; ++i )
        switch( typeof(number[i]) ) {
            case "number": ++count; break;
        }
    

    count 的值为 4。

    注意:NaN、Number.NEGATIVE_INFINITY 和 Number.POSITIVE_INFINITY 也是 "number"s,所以如果你不想计算这些,那么就这样做

    var count = 0;
    for( var i=0 ; i<number.length ; ++i )
        switch( typeof number[i] ) {
            case "number":
                if( !isNaN(number[i]) && isFinite(number[i]) )
                    ++count;
        }
    

    【讨论】:

    • break 是多余的,但如果你坚持...
    • @JanDvorak Lol,你说得对..
    • typeof 运算符周围的() 是多余的,但如果你坚持...
    【解决方案4】:
    var a = [1,"o",2,3,"a",0];
    var nums = 0;
    for(var i = 0;i<a.length;i++){
        if(typeof a[i] == "number") nums++;
    }
    alert(nums);
    

    【讨论】:

    • switch 在哪里? (没有投反对票)
    • nums.length 是他想要的,我想。
    • 这里不需要切换。
    • OP 似乎想要它,如问题中的粗体所示。
    • @m59 nums 这里已经是一个数字了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多