在JavaScript代码中不理解(变量Name!=“”) - Coderbyte Challenge#25:Number Search

时间:2013-12-14 23:01:56

标签: javascript if-statement

我很难分析其他人用于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 != ""

说???你能否举例说明它是如何工作的以及何时适用(两种用途)?...

4 个答案:

答案 0 :(得分:1)

for中的

curNum将一次填充1位数,直到它包含数字中的所有字符。此时,该数字将添加到结果中,curNum将重置为空字符串。

当迭代abc时,if条件

if (str[i] >= "0" && str[i] <= "9") { 

将失败,继续其他分支。在else分支上,将检查curNum是否有值并且该检查也将失败,因此没有任何反应,curNum仍为''

当迭代123时,if条件将始终匹配,curNum将成为112123

最后,当遇到另一个字母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/