2016-04-13 70 views
-2

我已經完全繪製了一個空白的如何讓一個字符串在if語句內正確返回。卡在一個字符串返回

function truncateString(str, num) { 
    var s = str; 
    var n = num; 
    if(s > n.length) { 
    return s.slice(0, n - 3).concat("..."); 
    } else return s; 
} 
truncateString("This string is too long", 11); 

我知道我弄錯了所有錯,但無法弄清楚如何使它工作。 請不要發佈解決方案,只是提醒我如何在if語句中正確返回字符串。

+0

您的預期產出是多少?你目前的產出是多少? –

+0

此問題是[離題(#2)](http://stackoverflow.com/help/on-topic)。 – zzzzBov

回答

1

這很好,你只是錯誤地交換了參數。

if(s > n.length) 

應該

if(s.length > n) 
1

基本上是一個number沒有叫length與它的財產,

if(s.length > n) 

的完整代碼會是這樣,

function truncateString(str, num){ 
    var s = str; 
    var n = num; 
    if(s.length > n) { 
    return s.slice(0, n - 3).concat("..."); 
    } 
    else { 
    return s; 
    } 
} 

truncateString("This string is too long", 11); 
//"This str..." 
1

你訪問了錯誤的對象上.length財產。 (你要求的是數字長度而不是字符串長度)。這意味着你的if語句的主要條件從不執行,並且函數每次都返回整個字符串。

0

我相信你對邏輯至少一個錯誤。不需要將s與n.length進行比較,您需要將str/s長度與num/n進行比較。

而且我認爲你試圖使用是有條件的三元運算符:?

下一個是你的修改版本。

function truncateString(str, num) 
{ 
    var s = str; 
    var n = num; 

return (s.length > n) ? s.slice(0, n - 3).concat("...") : s; 

} 

alert(truncateString("This string is too long", 11)); 
0

變量'n'包含原始值但不包含對象。這就是爲什麼變量'n'沒有'length'屬性的原因。所以n.length語句返回'undefined'值。最後,s> n.length語句返回false,並且如果塊永不執行。您可以使用s.length來代替。這裏的''保存字符串值,字符串也是JavaScript中的原始值,但是在運行時,只要您嘗試訪問它的任何屬性(包括長度屬性),字符串值就會轉換爲其包裝器字符串對象。