Is it possible to use ternary operator to add '...' if string exceeds 50 characters?
I tried it like this but it doesn't work.
{post.title.substring(0, 50) + post.title.length > 50
? '...'
: ''}
Any suggestion?
The conditional operator¹ is fairly greedy. To have it apply only to the part of your expression after the +
, you need parentheses (the grouping operator):
{post.title.substring(0, 50) + (post.title.length > 50
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−^
? '...'
: '')
// −−−−−−−−−−−−−−−−−−−−−^
}
But you might consider using CSS for this, rather than JavaScript. See text-overflow: ellipsis
. You'll probably need white-space: nowrap
and overflow: hidden;
as well:
.limit {
max-width: 20em;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
<div>With limit:</div>
<div class="limit">Now is the time for all good men to come to the aid of their country</div>
<div>Without limit:</div>
<div>Now is the time for all good men to come to the aid of their country</div>
¹ ? :
is a ternary operator (an operator accepting three operands), and for the moment it's JavaScript's only ternary operator, but there could be others in the future. Its name is the conditional operator.