Цитата:
Да и максимальная сборка либы - это всего 16 килобайт, объём такой же как и у underscore, а функционал несоизмеримо больше, а про скорость я вообще молчу. В общем на JavaScript.ru как обычно: "описание не читал, но по любому не нужон" :) |
Цитата:
|
Цитата:
Эта либа общего назначения, т.е. использовать её можно везде, все мои проекты (кроме 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 |
Написал короткую описательную статейку на хабр
|
Цитата:
|
Цитата:
т.е. пишем на обычном LS завёрнутую конструкцию, а это дело разворачивается в один вызов $C без всяких "var $C = require("Collection")" |
Цитата:
Цитата:
var collection = require("collection.js"); global.$C = collection.$C; global.Collection = collection.Collection; И всё, можно нигде больше не кидать require :) PS: следует заметить, что я не против require, просто в случае с Collection его нужно подключать везде и это утомляет :) |
Цитата:
хотя... спад производительности почти незаметен в LS... а если нужны производительные части, можно вызвать $C ) Цитата:
|
Цитата:
Я то хотел сделать единое навороченное функциональное АПИ для всех видов итерируемых данных :) |
Выпустил микроапдейт: 5.0.1.
|
Часовой пояс GMT +3, время: 05:17. |