假设我有一系列这样的电子邮件
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);
}
答案 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);