Тема: Collection v5
Показать сообщение отдельно
  #13 (permalink)  
Старый 10.06.2014, 00:24
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от monolithed Посмотреть сообщение
Да нет, слежу с первой версии... просто пока не могу понять где бы эта либа была полезна
Ты не мог следить с первой версии, т.к. первая публикация была с 3-й

Эта либа общего назначения, т.е. использовать её можно везде, все мои проекты (кроме Snakeskin, т.к. только в 5-й версии был добавлен механизм "контекста forEach") используют Collection. Одно "но", чтобы писать на Collection нужно любить функциональщину, т.е. не шарахаться от map / reduce и прочего, т.к. либа явно декларирует именно такой подход.

Пример, функция которая преобразовывает dash-style в camelCase

String.prototype.convertDashStyleToCamelCase = function () {
    return $C(this).reduce(function (res, el) {
        if (el !== '-') {
            res += this.$.up ? el.toUpperCase() : el;
        }

        this.$.up = el === '-';
        return res;
    
    }, '');
};


Обратная операция

String.prototype.convertCamelCaseToDashStyle = function () {
    return $C(this).reduce(function (res, el) {
        var lc = el.toLowerCase();
        return res + (el !== lc ? '-' : '') + lc;
    }, '');
};


Отбор элементов для пагинации

$C(...).forEach(function (el) {
        ...
    
}, {startIndex: 10, count: 10});


Тоже самое, но в обратном порядке

$C(...).forEach(function (el) {
        ...
    
}, {startIndex: 10, count: 10, reverse: true});


Количество вхождений каждого символа в строке

$C('fooobar1212').group(el => el)


Количество вхождений буквы 'o' в строке

$C('fooobar1212').length(el => el == 'o')


Преобразовать объект {ключ: значение} в Set из значений, которые больше 1


$C({a: 1, b: 2, c: 3}).map(el => el, {initial: new Set, filter: el => el > 1})


При этом не важно, что мы итерируем, хоть массив, объект, Map, Set, генератор, строку и т.д. все методы работают одинаково и со скоростью циклов, но в сахарном функциональном виде.

Примеров можно сделать уйму, но достаточно взглянуть на методы: https://github.com/kobezzza/Collection/wiki
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 10.06.2014 в 01:29.
Ответить с цитированием