Javascript lodash-truncate函数返回错误的结果

Javascript lodash-truncate函数返回错误的结果,javascript,lodash,Javascript,Lodash,Lodash函数返回以下代码段的错误结果,其中省略参数中使用了长HTML字符串 我想知道是否有我做得不对的地方,或者问题是否出在图书馆本身 var string=“在出版和图形设计中,lorem ipsum是一种占位符文本,通常用于演示文档的视觉形式,而不依赖于有意义的内容。用占位符文本替换实际内容可以让设计师在内容本身生成之前设计内容的形式。” var省略='nbsp' var truncated=uu.truncate(字符串,{长度:150,分隔符:/,?+/,省略:省略}); cons

Lodash函数返回以下代码段的错误结果,其中
省略
参数中使用了长HTML字符串

我想知道是否有我做得不对的地方,或者问题是否出在图书馆本身

var string=“在出版和图形设计中,lorem ipsum是一种占位符文本,通常用于演示文档的视觉形式,而不依赖于有意义的内容。用占位符文本替换实际内容可以让设计师在内容本身生成之前设计内容的形式。”
var省略='nbsp'
var truncated=uu.truncate(字符串,{长度:150,分隔符:/,?+/,省略:省略});
console.log(截断)

我不知道说这是图书馆的问题是否公平。据我所知,
省略
部分返回一个字符串,因此,如果您有一个100个字符长的字符串,并且希望截断为50,但省略字符串是200,那么它有点违背了目的,即使您试图用HTML元素替换它

在这里查看
\uu.truncate
的源代码,您会注意到,如果
options.length
小于
options.delegation
的长度,它将返回
options.delegation

我通过将
省略
的值更改为较短的值进行测试,结果返回:


如果我理解你想做什么,我想知道是否应该先截断字符串,然后再附加popover HTML,而不是使用lodash来做这件事。

第一条规则保持简单

你试图让一件事(遗漏指标)做两件事

  • 表示遗漏
  • 是一个可点击的元素
  • 为了更简单,首先隐藏省略指示符,然后在
    str.length
    超过150个字符时添加可单击元素

    var stringLimit = 150;
    
    var str = "In publishing and graphic design, lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document without relying on meaningful content. Replacing the actual content with placeholder text allows designers to design the form of the content before the content itself has been produced."
    
    var popoverToggle = '';
    if (str.length > stringLimit) {
      popoverToggle = '<span data-toggle="popover" data-placement="top" data-trigger="hover" data-html="true" data-content="'+ str +'">&nbsp<a href="javascript:void(0)">[...]</a></span>';
    }
    
    var truncated = _.truncate(str, {length: stringLimit, separator: /,? +/, omission: ''});
    
    console.log(truncated + popoverToggle);
    document.write(truncated + popoverToggle);
    
    var-stringLimit=150;
    var str=“在出版和平面设计中,lorem ipsum是一种占位符文本,通常用于演示文档的视觉形式,而不依赖于有意义的内容。用占位符文本替换实际内容可以让设计师在内容本身生成之前设计内容的形式。”
    var popoverToggle='';
    如果(str.length>stringLimit){
    popoverToggle='nbsp';
    }
    var truncated=uu.truncate(str,{length:stringLimit,分隔符:/,?+/,省略:''});
    log(截断+popoverToggle);
    document.write(截断+popoverToggle);
    
    看我的