Здравствуйте все! Это пятый пост в моей новой серии статей Node.js модули, о которых вы должны знать.
Первый пост был про dnode — фристайл RPC библиотеку для node.js. Второй пост был посвящен optimist — легковесному парсеру командной строки для node.js. Третий был про lazy — ленивые списки для node.js. А четвертый — про request — швецарский нож HTTP стримминга.
В этот раз я расскажу про hashish. Автором hashish является уже не безысвестный по предыдущим заметкам James Halliday. Если вас удивляет то, почему я так много пишу про его модули, то ответ простой — потому что он написал 88 модулей и каждый из них очень высокого уровня.
Hashish — JavaScript библиотека для работы с хэшами или, другими словами, в ней содержится набор функций, позволяющий манипулировать содержимым хэша.
Вот пример использования:
var Hash = require('hashish');
Hash({ a : 1, b : 2, c : 3, d : 4 })
.map(function (x) { return x * 10 })
.filter(function (x) { return x < 30 })
.forEach(function (x, key) {
console.log(key + ' => ' + x);
});
Здесь Hash
— объект, созданный на основе хэша { a: 1, b: 2, c: 3, d: 4 }
.
Далее, с помощью функции map
каждое значение ключа хэша умножается на 10
.
После этой операции хэш преобразуется в: { a: 10, b: 20, c: 30, d: 40 }
.
На следующем этапе применяется функция filter
, которая оставляет в хэше
только те элементы, значения которых меньше 30
. После этого шага хэш имее
вид: { a: 10, b: 20 }
. И в конце применяется функция forEach
, которая
выводит на экран оставшиеся после предыдущих преобразований элементы хэша и
их значения. Результат будет следующим:
a => 10
b => 20
Обратите внимание, насколько похож API для работы с хэшом на node-lazy, который я описывал ранее. Все преобразования могут быть связанными в последовательность, так что ваш код будет прекрасно выглядеть.
Если вы не хотите или не можете связывать функции, то hashish так же позволяет использовать его функции в дискретном варианте:
var Hash = require('hashish');
var obj = { a : 1, b : 2, c : 3, d : 4 };
var mapped = Hash.map(obj, function (x) {
return x * 10
});
console.dir(mapped);
Обратите внимание на то, как вызывается Hash.map
для obj
хэша. В
результате каждое значение элемента хэша будет умножено на 10
:
{ a: 10, b: 20, c: 30, d: 40 }
Hashish, кроме всего прочего, предоставляет возможность получать значения различных атрибутов. Вот пример:
$ node
> var Hash = require('hashish');
> var obj = { a : 1, b : 2, c : 3, d : 4 };
>
> Hash(obj).keys
[ 'a', 'b', 'c', 'd' ]
> Hash(obj).values
[ 1, 2, 3, 4 ]
> Hash(obj).length
4
Установить hashish можно через npm:
npm install hashish
Наслаждайтесь!