我第一次使用{
'ListOrderItemsResponse':{
'@xmlns':'https://mws.amazonservices.com/Orders/201 3-09-01',
'ListOrderItemsResult':{
'OrderItems':{
'OrderItem':{
'QuantityOrdered ':'1',
'Title':'Delta Rothko Rolling Bicycle Stand',
'ConditionId':'New',
'Is Gift':'false',
'ASIN':'B00XXXXTIK',
'SellerSKU':'9934638',
'OrderItemId':'49 624373726506',
'ProductInfo':{
'NumberOfItems':'1'
},
'QuantityShipped':'0',
'C onditionSubtypeId':'New'
}
},
'AmazonOrderId':'112-9XXXXXX-XXXXXXX'
},
'ResponseM etadata':{
'RequestId':'8XXXXX8-0866-44a4-96f5-XXXXXXXXXXXX'
}
}
}
,但在返回任何内容时遇到了一些麻烦。作为测试,我要获取一个字符串,并根据所测试的字符,控制台记录一些字符串输出。
switch
这些案例具有相同的值类型,所以我不确定我在做什么错。任何帮助将非常感激。
答案 0 :(得分:6)
根据您在switch语句中处理的值,您的测试无效。您仅处理A
和G
的案件,但您通过了ACG
。如果指定的任何一种情况都不匹配,Switch将无路可走,因为您还缺少默认的情况。在以下情况下,您的测试将有效:
function pairElement(str) {
switch (str) {
case "A":
console.log("some things")
break;
case "G":
console.log("some more things")
break;
}
}
pairElement("A"); // some things - valid
pairElement("G"); // some more things - valid
pairElement("ACG"); // switch case and no default - NOT valid
添加默认设置将为您提供
function pairElement(str) {
switch (str) {
case "A":
console.log("some things")
break;
case "G":
console.log("some more things")
break;
default:
console.log("something ELSE")
}
}
pairElement("A"); // some things - valid
pairElement("G"); // some more things - valid
pairElement("ACG"); // something ELSE - valid
现在还有一个问题,当您测试多字符串与单字符串时,您究竟期望什么?在处理开关中的单个字符时,您可能会希望传递给函数的字符串是逐个字符tested
个char,如果这样,则需要声明,因为这会改变问题/要求。
针对需要按字符进行字符更新的情况:
function pairElement(str) {
str.split('').forEach(function(v) {
switch (v) {
case "A":
console.log("some things")
break;
case "G":
console.log("some more things")
break;
default:
console.log("something ELSE")
}
}
)
}
pairElement("ACG");
// some things
// something ELSE
// some more things
答案 1 :(得分:4)
您应该添加一个 default
案例,因为您传递的是“ ACG”(无论如何)。任何编程语言的开关都需要匹配的大小写。
演示
function pairElement(str) {
switch (str) {
case "A":
console.log("some things")
break;
case "G":
console.log("some more things")
break;
default:
console.log("some things + some more things")
}
}
pairElement("ACG");
答案 2 :(得分:2)
您传入的字符串长度为三,首先要进行修改。第二种情况是,如果您遇到的任何情况都符合您希望的标准(目前就是这种情况),则必须进行默认评估。
cljs.js/empty-state
检查MDN Switch信息
答案 3 :(得分:1)
交换机使用严格的比较(===,换句话说,它必须完全匹配),因此在这种情况下,“ ACG”与“ A”或“ G”不完全匹配,并且由于没有完全匹配的开关,因此不执行任何操作。 / p>
为“ ACG”添加一个大小写,以在传递“ ACG”时使开关执行某些操作。您还可以添加默认案例,如果没有其他匹配项,则交换机将执行该案例:
function pairElement(str) {
switch (str) {
case "A":
console.log("some things")
break;
case "G":
console.log("some more things")
break;
case "ACG":
console.log("ACG exactly matches this case")
break;
default:
console.log("nothing matched so default executed");
break;
}
}
pairElement("A"); // some things
pairElement("G"); // some more things
pairElement("ACG"); // ACG exactly matches this case
pairElement("this won't match anything"); // nothing matched so default executed