2013-12-14 54 views
-1

我很難分析其他人的JS代碼的一行Coderbyte挑戰。我們要搜索給定字符串中的所有數字,將它們加在一起,然後返回最終的總和。那麼「88Hello 3World!」應該有91.「55Hello」的輸出應該有55的輸出與「5Hello 5」應該輸出10.我有困難,專門解釋代碼行說:在JavaScript代碼中不理解(variableName!=「」) - Coderbyte挑戰#25:NumberSearch

​​

請幫助我瞭解,這條線特別是在整個功能的上下文中正在做什麼。它完成了什麼?何時會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]是不是數字應用,因此,只要str [i]是數字以外的字符,curNum中的當前值就會轉換爲字符串?不知道這是否合理。但我想我在問什麼,究竟是什麼

curNum != "" 

說???並且可以請你展示它是如何工作的例子,當它應用(它的兩個用途)?...

+2

如果它不是空字符串! – adeneo

+0

好吧,那麼這是什麼意思,這行代碼是做什麼的? – Seeeyonnn

+1

它檢查curNum是不是一個空字符串,這就是它所做的,沒有魔法發生。 – adeneo

回答

1

curNum裏面的for會被一次填滿1個數字,直到它包含數字中的所有字符。此時,該號碼將被添加到結果中,curNum將被重置爲空字符串。

當過abc迭代,如果條件

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

會失敗,會在else分支。在else分支上,curNum將被檢查是否有值,並且檢查也會失敗,所以沒有任何反應,curNum仍然爲''

當遍歷123,如果條件永遠匹配,並且curNum將successivly是是112123

最後,當遇到另一個字母123x,x時,條件將失敗,進入else分支。在它上面curNum的確會有一個值(123),所以這個值將被解析爲一個整數並且被添加到結果中。

在字符串迭代後進行類似的檢查,以防末尾有數字。

+0

謝謝你 – Seeeyonnn

0

如果從不計算真正

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

然後curNum將是空的。該條件檢查CurNum是否不爲空。

0

如果變量海峽的價值與數量(例如:TEST_1)結束,然後你的循環將在此代碼

if (str[i] >= "0" && str[i] <= "9") {  //if the current element is b/w 0 and 9... 
    curNum += str[i]; 

,然後這個代碼還真(curNum =「」!)

完成

PS Sory for my poor english

+0

謝謝。所以如果我的問題收到負面的觀點,這是否意味着這是一個愚蠢的問題?如果這是一個愚蠢的問題,我很抱歉。不,不是真的。我其實不會道歉。這就是所謂的我學習... – Seeeyonnn

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/

+0

謝謝你的正則表達式隊長約翰。我仍然用頭撞牆試圖學習正則表達式。如果你知道任何優秀的教程,我將不勝感激。 – Seeeyonnn

+0

http://regexlib.com/RETester.aspx有你需要的所有信息。正則表達式非常難以遵循,所以嘗試使用現有的正則表達式,人們已經開發出來了。 –

+0

一旦你開始從教程中掌握正則表達式,這個正則表達式構建器/測試者可能也會派上用場:http://gskinner.com/RegExr/ – TecBrat