2017-06-14 30 views
0

我正在处理Freecodecamp问题,其中一个组件正在处理5张卡片的值,并将其与您分配的值进行比较,然后显示基于这些卡的当前计数。基于卡组的值增加/减少Javascript计数,并返回准确的计数

因此,例如;

数字2,3,4,5和6的卡片应使计数增加1. 数字7,8和9的卡片不应该做任何事情。 卡10,J,Q,K,A应该减1计数。

所以,如果我给它5卡值,它应该加起来,并提供我的计数,根据卡的价值。

这是我的代码(我知道它是马虎,但试图让它更好);

var count = 0; 

function cc(card) { 
    // Only change code below this line 
    switch (card) { 
    case ("A"): 
     --count; } 
    switch (card) { 
    case ("2"): 
     ++count; } 
    switch (card) { 
    case ("3"): 
     ++count; } 
    switch (card) { 
    case ("4"): 
     ++count; } 
    switch (card) { 
    case ("5"): 
     ++count; } 
    switch (card) { 
    case ("6"): 
     ++count; } 
    switch (card) { 
    case ("7"): 
     } 
    switch (card) { 
    case ("8"): 
     } 
    switch (card) { 
    case ("9"): 
     } 
    switch (card) { 
    case ("10"): 
     --count; } 
    switch (card) { 
    case ("J"): 
     --count; } 
    switch (card) { 
    case ("Q"): 
     --count; } 
    switch (card) { 
    case ("K"): 
     --count; } 

return count; 
    // Only change code above this line 
} 

// Add/remove calls to test your function. 
// Note: Only the last will display 
cc(2); cc(3); cc(7); cc('K'); cc('A'); 

现在我试过使用返回计数; return ++ count;并返回 - 计数;这些都给了我不同的价值。我想我可能不会在底部引用cc的值,甚至根据正确的值来选择计数,我想我可能只是对整套牌发出盲数。

任何帮助是超级赞赏。提前致谢。

回答

1

事情是这样的:

var count = 0; 

function cc(card) {//or, with ES6: cc = (card) => { (no 'function' keyword required) 
switch (card) { 
    case ("A")://all of these 'fall through' until they hit break...be careful with this, and comment it in your code 
    case ("10"): 
    case ("J"): 
    case ("Q"): 
    case ("K"): 
     count -= 1;//or, count = count - 1 
     break;//break sends you out of the switch statement 
    case ("2")://same here 
    case ("3"): 
    case ("4"): 
    case ("5"): 
    case ("6"): 
     count += 1; 
     break; 
    //no need to do anything with 7, 8, 9 
} 
    return count; 
} 

您还可以添加一个“默认”的情况下到底比那些处理以外的值被发送,但在这种情况下,你会做会count = count,这是没有必要的。祝你好运!