显示不带修剪的电子邮件数组-ES6

时间:2018-12-24 10:41:06

标签: typescript ecmascript-6

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

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);
}

2 个答案:

答案 0 :(得分:1)

我只会使用常规的for循环:

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

  result += email + " ";
 }

答案 1 :(得分:0)

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

const emails = [ 'guest1@gmail.com' , 'guest2@email.com' , 'guest3@email.com', 'guest3@email.com'];

const newEmails = emails.reduce((acc, val) => `${acc.join('')}${val}`.length < 60 ? acc.concat(val) : acc, []);

console.log(newEmails);