Показать массив писем без обрезки - es6 - PullRequest
0 голосов
/ 24 декабря 2018

допустим, у меня есть такой массив писем

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 голосов
/ 24 декабря 2018

Я бы просто использовал обычный цикл for:

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

  result += email + " ";
 }
0 голосов
/ 24 декабря 2018

Вы можете попробовать это, проверив длину конечной строки, если вы добавите письмо.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...