2017-02-26 71 views
2

我開始了一段JavaScript旅程,並且有以下代碼,我真的需要詳細瞭解這些代碼。尤其是當它說if (str.slice(i, i + 2) === " ")JavaScript中的切片

var str = prompt("Enter some text"); 
var numChars = str.length; 
for (var i = 0; i < numChars; i++) { 
    if (str.slice(i, i + 2) === " ") { 
     alert("No double spaces!"); 
     break; 
    } 
} 
+1

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/slice在'if'中它應該可能是''「''(兩個空格)。 – Sirko

+0

該代碼似乎是錯的 – Musa

+0

indexOf或正則表達式更適合這個問題 –

回答

0

它說的是,對於輸入文字中每個字母i,以信i + 2,如果它們等於" ",那麼他們兩個空格就行了。

換句話說,它是檢查每個文本的兩個字母的組合,看看它們是否匹配兩個空格

例如:

"En", "nt", "te", "er", "r ", " s", "so", "om"等等

所以,片是「切片」字母參數中指定的範圍內:str.slice(beginIndex[, endIndex])

編輯:沒有看到提示()調用,所以相應的更新。

也許試試這個,以獲得所發生的事情的一個更好的主意:

var str = prompt("Enter some text"); 
var numChars = str.length; 
for (var i = 0; i < numChars; i++) { 
    if (str.slice(i, i + 2) === " ") { 
     alert("No double spaces!"); 
     break; 
    } else { 
     document.write(str.slice(i, i + 2) + "<br>") 
    } 
} 
+0

感謝您的幫助。 –

0

str.slice(i, i + 2)一個for循環內將解析字符串str與指數ii+1以兩個連續的字符出現的同時,i會根據for循環,具有從0lengthstr的所有值。

注意:在您的代碼片段if(str.slice(i, i + 2) === " ")您正在比較兩個字符與單個字符,這是白色空間。所以它永遠不會是真的。

看看更清晰的理解更好的例子。

var str1 = "Single space"; 
 
var str2 = "Double space"; 
 

 
var numChars1 = str1.length; 
 
var numChars2 = str2.length; 
 

 
// Check is str1 has double spaces 
 
for (var i = 0; i < numChars1; i++) { 
 
    if (str1.slice(i, i + 2) === " ") { 
 
    console.log("Double spaces found in str1"); 
 
    break; 
 
    } 
 
} 
 

 
// Check is str2 has double spaces 
 
for (var i = 0; i < numChars1; i++) { 
 
    if (str2.slice(i, i + 2) === " ") { 
 
    console.log("Double spaces found in str2"); 
 
    break; 
 
    } 
 
}

瞭解並找到w3schools

+0

感謝您的幫助:) –

1

你用一個空格將關於切片更多的例子。

if (str.slice(i, i + 2) === " ") { 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
//       ^^^ single space 

的比較是僅true在一種情況下,在用一個空格的字符串的末尾。所有其他比較的結果都是false,因爲長度爲2的字符串永遠不會等於具有單個字符的字符串。

+0

感謝您的幫助。 –