JSFiddle - React, Tailwind, and code Playground

by Евгений

HTML

<a href="http://javascript.ru/forum/job/48912-skript-sortirovshhik-href%3D.html" target="_blank">http://javascript.ru/forum/job/48912-skript-sortirovshhik-href%3D.html</a>
<textarea id="src-text">
    <li><a href="http://golifehack.ru/podstavka-planshet">самодельная подставка для планшета</a></li>
    <li><a href="http://golifehack.ru/tag/iphone">лайфхак для айфона</a></li>
    <li><a href="http://golifehack.ru/sovet-ipad-two">как подключить смайлики на айпаде</a></li>
    <li><a href="http://golifehack.ru/podstavka-planshet">самодельная автомобильная подставка для планшета</a></li>
    <li><a href="http://golifehack.ru/perevernut-ekran-noutbuke">acer перевернулся экран</a></li>
    <li><a href="http://golifehack.ru/perevernut-ekran-noutbuke">асер как перевернуть экран</a></li>
</textarea>
<input id="len" type="number" value="5" />
<button id="go" onclick="urlSplitter(document.querySelector('#src-text').value, document.querySelector('#len').value)">Генерировать</button>

CSS

textarea {
    width: 100%;
    height: 200px;
}

JavaScript

function urlSplitter(txt, len) {
    var objAll = [],
        objGroups = [],
        tempHref,
        tempLi,
        isFound;
    var ul = document.createElement('ul');
    ul.innerHTML = txt;
    var urls = ul.querySelectorAll('li');
    for (var i = 0; i < urls.length; i++) {
        tempLi = urls[i].outerHTML;
        tempHref = urls[i].querySelector('a').href;
        isFound = false;
        groups: for (var j = 0; j < objGroups.length; j++) {
            if (objGroups[j].length >=5) continue;
            items: for (var k = 0; k < objGroups[j].length; k++) {
                if(objGroups[j][k][0] == tempHref) continue groups;
            }
        }
        console.log('i: ' + i + '; j: ' + j + '; k: ' + k + '; ' + tempHref);
        if (objGroups[j] === undefined) objGroups[j] = []; 
        objGroups[j].push([tempHref, tempLi]);
    }
    
    console.log(objGroups.join('-----------------------------'));
}