Underscore.jsは非常に優れているため、違法であるべきライブラリです

遅かれ早かれ、意味のあるjavascriptコードの膨大な部分を書かなければならなかった人は誰でも、この言語には多くの知識がないか、または生来の構造が単に不便であることに気付きました。 JQuery、Prototype、MooToolsなどは、粗さを滑らかにするために使用されます。 誰かは既にそれらなしでコーディングする方法をほとんど知らない。 今日は、javascript-programmerの世界をさらに美しくする別のすばらしいライブラリについてお話します。 Underscore.jsについてです



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にあることを追加する価値があります



更新しました。 いくつかの例を追加しました。



All Articles