Underscore.jsまたは単に_.jsは、関数型プログラミング、Ruby、Python、またはPrototype.jsの愛好家に使用されるユーティリティ関数のセットです(ただし、Prototypeとは異なり、このライブラリは基本JavaScriptクラスを拡張しません)。 jQueryとうまくやり取りするために書かれました。
Underscore.jsは60以上の関数を提供します。 それらのいくつかはmap-reduceファン向けに設計されていますが、その他はjavascriptの特別な補助機能です。 一部の機能がブラウザ開発者によって実装されている場合、ライブラリは呼び出しを委任できます。
以下に、実装する関数のリストと公式ドキュメントの例を示します。
コレクションを操作する
each, map, reduce, reduceRight, detect, select, reject, all, any, include, invoke, pluck, max, min, sortBy, sortedIndex, toArray, size
例
// Map & Reduce
_.map([1, 2, 3], function(num){ return num * 3 }); // => [3, 6, 9]
var sum = _.reduce([1, 2, 3], 0, function(memo, num){ return memo + num }); // => 6
// true
_.any([null, 0, 'yes', false]); //=> true
// true
_.all([true, 1, null, 'yes']); // => false
//
var stooges = [{name : 'moe', age : 40}, {name : 'larry', age : 50}];
_.pluck(stooges, 'name'); // => ["moe", "larry"]
配列を操作する
first, rest, last, compact, flatten, without, uniq, intersect, zip, indexOf, lastIndexOf, range
例
//
_.first([5, 4, 3, 2, 1]); // => 5
//
_.last([5, 4, 3, 2, 1]); // => 1
//
_.without([1, 2, 1, 0, 3, 1, 4], 0, 1); // => [2, 3, 4]
//
_.uniq([1, 2, 1, 3, 1, 4]); // => [1, 2, 3, 4]
関数を操作する
bind, bindAll, memoize, delay, defer, wrap, compose
例
//
var fibonacci = function(n) {
return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
};
var fastFibonacci = _.memoize(fibonacci);
オブジェクトを操作する
keys, values, functions, extend, clone, tap, isEqual, isEmpty, isElement, isArray, isArguments, isFunction, isString, isNumber, isBoolean, isDate, isRegExp isNaN, isNull, isUndefined
例
//
_.keys({one : 1, two : 2, three : 3}); // => ["one", "two", "three"]
//
_.values({one : 1, two : 2, three : 3}); // => [1, 2, 3]
//
_.extend({name : 'moe'}, {age : 50}); // => {name : 'moe', age : 50}
公益事業
noConflict, identity, times, breakLoop, mixin, uniqueId, template
例
//
_(5).times(function(){ console.log('Odelay!"); });
連続通話の場合
chain, value
名前はそれ自体を物語っています。 ドキュメントはここで見つけることができ、非常に良い明確な例があります。 英語を知らなくても誰も止められないと思います。 しかし、大きなニーズがある場合は、ロシア語に翻訳できます。
圧縮された形式でライブラリの重量が2.9kbであり、ソースがGitHubにあることを追加する価値があります 。
更新しました。 いくつかの例を追加しました。