Typescript 显示不带修剪的电子邮件阵列-es6

Typescript 显示不带修剪的电子邮件阵列-es6,typescript,ecmascript-6,Typescript,Ecmascript 6,假设我有一系列这样的电子邮件 emails = [ 'guest1@gmail.com' , 'guest2@email.com' , 'guest3@email.com', 'guest3@email.com'] 预期结果:在标题中显示完整的电子邮件,其中仅允许的最大字符数为60،,因此如果有3封电子邮件超过允许的字符数,我们将显示其中两封,忽略其余的 我尝试了以下方法,但其余的都被卡住了 public summarizeEmails() { let numberOfRecipent

假设我有一系列这样的电子邮件

emails = [ 'guest1@gmail.com' , 'guest2@email.com' , 'guest3@email.com', 'guest3@email.com']
预期结果:在标题中显示完整的电子邮件,其中仅允许的最大字符数为60،,因此如果有3封电子邮件超过允许的字符数,我们将显示其中两封,忽略其余的

我尝试了以下方法,但其余的都被卡住了

public summarizeEmails() {
    let numberOfRecipents: string = '';
    let max_char: number = 60;
    let numberOfChar: number;

    let otherRecipients =  this.emails
        .filter(p => p.email !== this.profile.email)
        .map(p => p.fullNameOrEmail().length)


        console.log(otherRecipients);
}

您可以尝试此方法,检查添加电子邮件后最终字符串的长度

常量电子邮件=['guest1@gmail.com' , 'guest2@email.com' , 'guest3@email.com', 'guest3@email.com']; const newEmails=emails.reduceacc,val=>`${acc.join}${val}`。长度<60?acc.concatval:acc,[];
console.lognewemail 我会使用一个常规for循环:

 let result = "";
 for(const [index, email] of emails.entries()) {
  if(result.length + email.length > 60) {
    result += "+" + (emails.length - index);
    break;
  }

  result += email + " ";
 }

我听不懂你的问题。您希望在输出中准确显示什么。显示完整电子邮件,最多60个字符,因此,例如,如果有两封50个字符的电子邮件,第三封30个字符的电子邮件,我们输出前两封电子邮件,但不输出类似的内容guest3@......well如果字符数超过60,我基本上是想显示电子邮件,而不是像那样修剪它们guest1@.... 只需显示完整的电子邮件,而忽略其余字符Hanks很好:我的问题是如何显示其余电子邮件的长度+数组中剩余的2封电子邮件,例如:结果+=++emails.length-索引;这在没有-1Hi Jonas的情况下效果很好,我正在尝试使用forEach而不是for of,任何帮助都将不胜感激:@Amr.Ayoub为什么?!您不能破坏.forEach循环,因此它在这里是错误的工具