Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
截断Javascript中的字符串,混淆最后两个测试字符串_Javascript_Truncate - Fatal编程技术网

截断Javascript中的字符串,混淆最后两个测试字符串

截断Javascript中的字符串,混淆最后两个测试字符串,javascript,truncate,Javascript,Truncate,我在为freecodecamp做一个项目 项目规则: 如果字符串(第一个参数)长于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有。。。结束 请注意,在末尾插入三个点将增加字符串长度 但是,如果给定的最大字符串长度num小于或等于3,则在确定截断字符串时,添加三个点不会增加字符串长度 我的测试字符串包括: truncateString(“A-tisket A-tasket A绿色和黄色篮子”,11)应返回“A-tisket…” truncateString(“彼得·派珀挑了一啄腌辣椒

我在为freecodecamp做一个项目

项目规则:

如果字符串(第一个参数)长于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有。。。结束

请注意,在末尾插入三个点将增加字符串长度

但是,如果给定的最大字符串长度num小于或等于3,则在确定截断字符串时,添加三个点不会增加字符串长度

我的测试字符串包括:

truncateString(“A-tisket A-tasket A绿色和黄色篮子”,11)
应返回“A-tisket…”

truncateString(“彼得·派珀挑了一啄腌辣椒”,14)
应该返回“彼得·派珀…”

truncateString(“A-tisket A-tasket A绿色和黄色篮”、“A-tisket A-tasket A绿色和黄色篮”。length)
应返回“A-tisket A-tasket A绿色和黄色篮”

truncateString(“A-tisket A-tasket A绿色和黄色篮”、“A-tisket A-tasket A绿色和黄色篮”。长度+2)
应返回“A-tisket A-tasket A绿色和黄色篮”

truncateString(“A-”,1)
应返回“A…”

truncateString(“绝对更长”,2)
应返回“Ab…”

现在,我已经使用
三元
运算符解决了大部分问题,因此它相当简单,除了最后两个
('a-',1)
('Absolute Longer',2)
,我的问题是,如何成功完成截断并返回最后两个字符串的预期输出

资料来源:

function truncateString(str, num) {
  return str.length > num ? str.slice(0, num - 3) + '...' : str;
}
大概是这样的:

function truncateString(str, num) {
  var result = str;

  if(str.length - 3 > num) {
    result = str.length > num ? str.slice(0, num - 3) + '...' : str;
  }
  return result;
}

truncateString("A-", 1)
// "A-"

truncateString("A-tisket a-tasket A green and yellow basket", 11)
// "A-tisket..."
大概是这样的:

function truncateString(str, num) {
  var result = str;

  if(str.length - 3 > num) {
    result = str.length > num ? str.slice(0, num - 3) + '...' : str;
  }
  return result;
}

truncateString("A-", 1)
// "A-"

truncateString("A-tisket a-tasket A green and yellow basket", 11)
// "A-tisket..."

您需要处理
num
小于或等于3的情况。您只需添加另一个条件即可执行此操作:

函数truncateString(str,num){
返回str.length>num?str.slice(0,num>=3?num-3:num)+’…':str;
}
日志(truncateString(“A-tisket A-tasket A绿色和黄色的篮子”,11));
log(truncateString(“Peter Piper挑了一啄腌辣椒”,14));
console.log(truncateString(“A-tisket A-tasket A绿色和黄色篮子”,“A-tisket A-tasket A绿色和黄色篮子”);
console.log(truncateString(“A-tisket A-tasket A绿色和黄色篮子”,“A-tisket A-tasket A绿色和黄色篮子”)。长度+2);
log(truncateString(“A-”,1));

log(truncateString(“绝对更长”,2))
您需要处理
num
小于或等于3的情况。您只需添加另一个条件即可执行此操作:

函数truncateString(str,num){
返回str.length>num?str.slice(0,num>=3?num-3:num)+’…':str;
}
日志(truncateString(“A-tisket A-tasket A绿色和黄色的篮子”,11));
log(truncateString(“Peter Piper挑了一啄腌辣椒”,14));
console.log(truncateString(“A-tisket A-tasket A绿色和黄色篮子”,“A-tisket A-tasket A绿色和黄色篮子”);
console.log(truncateString(“A-tisket A-tasket A绿色和黄色篮子”,“A-tisket A-tasket A绿色和黄色篮子”)。长度+2);
log(truncateString(“A-”,1));

log(truncateString(“绝对更长”,2))这会有帮助。不是完美的,但很有效,应该很容易让初学者理解

function truncateString(str, num) {
        var res = "";
        if (str.length > num) {
          if (num > 3) {
            res = str.slice(0, num - 3) + "...";
          } else {
            res = str.slice(0, num) + "...";
          }
          return res;
        }
        return str;

      }

      truncateString("A-tisket a-tasket A green and yellow basket", 11);

这会有帮助。不是完美的,但很有效,应该很容易让初学者理解

function truncateString(str, num) {
        var res = "";
        if (str.length > num) {
          if (num > 3) {
            res = str.slice(0, num - 3) + "...";
          } else {
            res = str.slice(0, num) + "...";
          }
          return res;
        }
        return str;

      }

      truncateString("A-tisket a-tasket A green and yellow basket", 11);

我注意到任务在2018年略有变化: 如果字符串(第一个参数)长于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有。。。结束

解决办法是:

函数truncateString(str,num){
//把你行李箱里的垃圾清理掉
如果(str.length>num){
返回str.slice(0,num)+'…';
}否则{
返回str;
}
}

截断线(“A-tisket A-tasket A绿色和黄色篮子”,8)我注意到任务在2018年略有变化: 如果字符串(第一个参数)长于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有。。。结束

解决办法是:

函数truncateString(str,num){
//把你行李箱里的垃圾清理掉
如果(str.length>num){
返回str.slice(0,num)+'…';
}否则{
返回str;
}
}

截断线(“A-tisket A-tasket A绿色和黄色篮子”,8)我对这个问题的简短解决方案

const truncateString = (str, num) => str.length > num ? 
                                     str.substr(0, num) + "..." : 
                                     str;

我对这个问题的简短解答

const truncateString = (str, num) => str.length > num ? 
                                     str.substr(0, num) + "..." : 
                                     str;

您正在对长度为2的字符串(
“a-”
)执行
num-3
。你为什么要做num-3?你的
truncateString
的目的是什么?如果你真的解释了
truncateString
实际上应该做什么,你的问题就会清楚得多。而不是让我们从输入和预期的输出中猜测规则。@RocketHazmat:我认为这样做的目的是,如果字符串比请求的
num
长,就用
..
替换最后三个字符。但是他们忽略了字符串小于
3
的边大小写。或者num小于3。所以您需要做的是根据项目的最后一个需求添加条件逻辑。不能只使用
num-3
每个字符串。您可以使用
if/else
语句来完成它。如果字符串长度小于3,则只需在截断后追加
..
,否则请再剪掉三个字符,然后在截断后追加
..
。类似的情况是,您正在对长度为2的字符串(
“a-”
)执行
num-3
。你为什么要做num-3?您的
truncateString
的目的是什么?如果您真正解释了
truncateString
是什么,您的问题会更清楚