javascript - 这个 limitChars 功能可以改进吗?

标签 javascript jquery

我刚刚编写了一个 limitChars() 函数。

var limitChars = function(str, limit, endChar, preserveWord) {
  str = $.trim(str);
  var strLength = str.length;
  if (strLength <= limit) {
    return str;
  }

  if (limit == 0) {
    return '';
  }

  endChar = endChar || '…';

  if (preserveWord && ! str.substr(limit, 1).match(/\s/)) {
    while ( limit < strLength && ! str.substr(limit, 1).match(/\s/)) {
      limit++;
    }
  }

   return $.trim(str.substr(0, limit)) + endChar;     
}

出于学习目的,我喜欢post my solution在这里看看是否有人可以改进它(我经常发现我忽略了一些东西,我们都学习了 :) )

所以,请告诉我哪里可以改进这段代码:)

(哦,我使用 jQuery 的 $.trim(),但如果您想使用更多 jQuery 特定函数,请随意使用)。

最佳答案

indexOf接受一个可选的第二个参数 fromIndex,我们可以这样实现函数:

function limitChars(str, limit, endChar, preserveWord) {
    str = $.trim(str);
    return (str.length > limit) ? str.substring(0, (preserveWord ? str.indexOf(' ', limit) : limit)) + (endChar || '…') : str;
}

可读性差很多,但我想你明白了。 :)

编辑: 我刚刚意识到我错过了原始脚本的一部分,只有当字符串的长度长于 时才会附加 endChar限制。是时候使用另一个三元运算符了!

关于javascript - 这个 limitChars 功能可以改进吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021362/

相关文章:

jQuery 选择 "change"事件未触发

jquery - 第二次单击时将 onclick 更改回原始图像

javascript - 动态创建嵌套 JSON 对象父级和子级

javascript - d3js : time scaling and winter months

javascript - IE11 的 ES6 代理 Polyfill

javascript - 图片幻灯片不淡出然后淡入?

jQuery 在选中复选框时检索数据

jquery - vGrid 中的不同图像宽度

javascript - 从 URL/查询字符串预加载 Angular 组件

javascript - 选择/取消选择和 mouseOver/mouseOut 后更改对象的颜色