2012-01-16 21 views
10

私は、主にフィルタリング、並べ替え、グループ化/カウントのためにオブジェクトの配列を操作するJavaScriptライブラリを探しています。underscore.jsの代替手段

underscore.jsが請求書に適合しているようですが、私は他のオプションを調べることに興味があります。アンダースコアには60以上の機能がありますが、私は一握りしか必要ありません。

たとえば、私は、いくつかのデータ変換可能なライブラリにこのような機能を含めると期待していますが、どこを見るかはわかりません。

+0

あなたはいつもあなたがレイノスに基づいて、[ソース](http://documentcloud.github.com/underscore/docs/underscore.html) – rlemon

+0

を形成する必要がある*関数/メソッドの*の一握りを取り去るだけで試すことができます'答え、私は実際に私がES5シムから必要なものを取り除くべきだと思っています。 – Christophe

答えて

8

それはJavaScript arr.filterarr.sortarr.lengthと呼ばれています。

アレイ上に配列メソッドを適用できます。一般的な配列はfilter,mapreduceです。それらを組み合わせて複雑な操作を作成できます。

あなたがオブジェクトを反復処理する場合は、ES3の世界に住んでいる場合

Object.keys(o).forEach(function (key) { 
    var val = o[key]; 
    ... 
}); 

を使用アンダースコアは便利ですが、ES5はあなたが必要なすべてを持って、すべてが行う下線は、その上に肥大化を追加することです。

+21

'arr.length'?私はあなたのプログラムの海賊の数を教えてくれませんか? ;) –

+2

私はIE 8とIE 7でも人気がある世界に住んでいます... http://kangax.github.com/es5-compat-table/ – Christophe

+4

@Christophe [ES5-shim](https:// github.com/kriskowal/es5-shim)問題が解決しました。 – Raynos

5

次の2つのライブラリに見てみたいことがあります。

+0

ありがとうございます。どうやら、2番目のものは数値の配列にしか作用しませんが、私はオブジェクトの配列に対しては解決策が必要です。 – Christophe

18

私は、これは古いです知っていますが、lodashを見たのですか?サイトから:

Underscore.jsのドロップイン置換*。 [...]

カスタムビルドでは、必要なメソッドのみを含む軽量バージョンのLo-Dashを簡単に作成できます。そのためには、メソッドの依存関係やエイリアスマッピングをすべて処理します。

+0

Lo-Dash over Underscoreの利点は何ですか?アンダースコアはすでに小さいです。 – blaster

+2

@blaster:Lo-Dashはかなり最適化されています。ここでは、ビジュアル化されたベンチマーク結果を見ることができます:http://dtao.github.io/lazy.js/ –

10

による遅延評価にunderscore.jsに似ていますが、重要なのパフォーマンス改善と

+2

このライブラリは、複数の操作を連鎖させたい場合にのみパフォーマンスを向上させます。単一の 'map()'や 'reduce()'を実行するとパフォーマンスが向上しません(特にロダッシュに比べて実際には遅くなる場合があります)。ただし、非常に大規模なデータセットで操作する場合、パフォーマンスの向上は**本当に**顕著です。 – idbehold

+3

@idbehold:JavaScriptエンジンの動作が大きく異なるため、環境や配列のサイズによって異なります。たとえば、Chromeでは、小さな配列でも連鎖しない場合でも、Lazy.jsはLo-Dashより優れています。しかし、Firefoxでは、そのシナリオではLo-Dashが高速であることは間違いありません。 –

1

lowscoreを(http://dtao.github.io/lazy.js/)をlazy.jsを見てみましょうは非常に軽量アンダースコアであることを意図している:

  • することができますrequire必要な機能のみ
  • JSサイズを約15k、または約50kを縮小して縮小することができます。