2016-04-13 69 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中的原始值,但是在运行时,只要您尝试访问它的任何属性(包括长度属性),字符串值就会转换为其包装器字符串对象。