如何截断并向超过特定字数的文本添加省略号?

How do I truncate and add ellipses to text that's longer than a specific number of words?

我想出了如何截断文本,但我只想在文本超过 10 个单词时添加省略号。如果文字少于10个字,我不想显示省略号。

我的代码按照我想要的方式截断了文本,但我不希望使用省略号来表示较短的文本。
我怎样才能做到这一点?

var shortText = jQuery.trim(title).split(" ").slice(0, 10).join(" ") + "...";

一种方法是根据总字数有条件地添加省略号。
split() returns an array, you can test against the array's length property.

function truncateText(text) {

  text = text.trim();
  let words = text.split(" ");

  return words.length > 10
    ? words.slice(0, 10).join(" ") + "..."
    : text;

}

console.log(
  truncateText("This is a sentence that is more than ten words long.")
);

console.log(
  truncateText("This is a shorter sentence.")
);

顺便说一句,jQuery probably 不是必需的,因为 trim()split()join()slice()length 都是标准的(普通)JavaScript.

使用Array.map

title.trim().split(" ")
  .slice(0,11)
// function (e,i){ i<10? e : '...' }
  .map( (e,i) => i < 10? e : '...' )
  .join(' ')

map 函数将用省略号

替换第 11 个元素(如果存在)

副作用:这将加入带有 space

的省略号