Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Удаленная работа для IT-специалистов
{key,with,before}
function([a,a,a,a,b,b,b,b,c,c]){ ... } // [{key:a,with:0,before:3},{key:b,with:4,before:7},{key:c,with:8,before:9}]
[a,a,a,a,b,b,b,b,c,c].reduce(function(s, e, i) { var t = s.pop() || {key: e, with: i}; if (t.key !== e) { s.push(t); t = {key: e, with: i}; } t.before = i; s.push(t); return s; }, []);