JSFiddle - React, Tailwind, and code Playground

by ozzon91

HTML

<div id ='mails'></div>

JavaScript

var mailsNode = document.getElementById('mails');

var onlyAliases = ['t', 'w']; 

var mails = ["[email protected]", "[email protected]", "[email protected]", "[email protected]", '[email protected]'],
    names = ["Gitter Notifications", "", "Tom Soer", 'Test', ""];

var CountChars = 20;
var lavel = 3;

var res = '';

function minMails(mailMaxCountChars, names, mails) {
	var result = _.map(mails, function(mail,n) {
		var name = names[n] || '';	
	
		var mailPart = mail.split('@')[0] || '';
	
		if(!_.contains(onlyAliases, mailPart)) {
			if(!name.length) {
                name = mail;
                
                if(lavel <= 2) {
                    name = mailPart;
                }
				
			} else {
            	if(lavel <= 1) {
                	name = name.split(' ')[0];
                }
            }
	
			} else {
				name = 'я';
			}
	
			return name;
	});

	result = _.uniq(result).join(', ');
    
    
	if(result.length > mailMaxCountChars && (lavel > 1)) {
        lavel--;
		minMails(CountChars, names, mails);
   
	} else {
		return result;
	}
}




mailsNode.textContent = minMails(CountChars, names, mails);