我很难分析其他人用于Coderbyte挑战的JS代码。我们将搜索给定字符串中的所有数字,将它们一起添加,然后返回最终总和。所以“88Hello 3World!”应该有91的输出。“55Hello”的输出应该是55.而“5Hello 5”应该输出10.我难以解释的代码行说明:
else if (curNum != "") {
请帮助我理解,这一行,特别是在整个功能的上下文中做了什么。它完成了什么?什么时候curNum ===“”?你举个例子吗?该行取自以下代码:
function NumberAddition(str) {
var result = 0; //creates var result; sets value to 0
var curNum = ""; //creates var curNum; sets value to ""
for (var i = 0; i < str.length; i++) { //run thru user-inputted string, for each character...
if (str[i] >= "0" && str[i] <= "9") { //if the current element is b/w 0 and 9...
curNum += str[i]; //add the value of that element (as a string) to curNum
else if (curNum != "") *** // ***the 1st part of the if statement is relevant if str[i] is a number. What does this else-if branch do and when does it apply???!
result += parseInt(curNum); // convert curNum to an integer and add it to result variable
curNum = ""; // reset curNum variable to "" / blank
}
}
if (curNum != "") *** // *** again, when does this apply?
result += parseInt(curNum); // take whatever's in curNum and convert to an integer and add to result variable
}
return result; //return result after running thru entire for-loop
}
如果我要对它进行刺穿(读取行的行),当str [i]不是数字时,将应用代码行,以便当前在curNum中的值转换为字符串为str [i]是一个数字以外的字符吗?不确定这是否有意义。但我猜我在问什么,究竟是什么
curNum != ""
说???你能否举例说明它是如何工作的以及何时适用(两种用途)?...
答案 0 :(得分:1)
curNum
将一次填充1位数,直到它包含数字中的所有字符。此时,该数字将添加到结果中,curNum
将重置为空字符串。
当迭代abc
时,if条件
if (str[i] >= "0" && str[i] <= "9") {
将失败,继续其他分支。在else分支上,将检查curNum是否有值并且该检查也将失败,因此没有任何反应,curNum仍为''
。
当迭代123
时,if条件将始终匹配,curNum将成为1
,12
,123
。
最后,当遇到另一个字母123x
时,x
上的条件将失败,继续执行else分支。在它上面,curNum确实会有一个值(123
),因此该值将被解析为一个整数并添加到结果中。
在迭代字符串之后进行类似的检查,以防最后有数字。
答案 1 :(得分:0)
如果这永远不会评估为真
if (str[i] >= "0" && str[i] <= "9")
然后curNum将为空。条件检查CurNum是否为空。
答案 2 :(得分:0)
如果变量 str 的值以数字结尾(例如:Test_1),那么您的循环将在此代码上完成
if (str[i] >= "0" && str[i] <= "9") { //if the current element is b/w 0 and 9...
curNum += str[i];
然后此代码返回true(curNum!=“”)
P.S。索里为我可怜的英语
答案 3 :(得分:0)
确定。
if (str[i] >= "0" && str[i] <= "9") {
// If currently value is between 0 and 9
// Assign curnum
} elseif (curNum != "") {
// If curnum has a value then parse the integer value.
}
我建议使用正则表达式来解析字符串中的数值。小提琴: http://jsfiddle.net/5qf7q/15/