2012-01-16 20 views
10

Sto cercando una libreria JavaScript che manipola gli array di oggetti, principalmente per il filtraggio, l'ordinamento e il raggruppamento/conteggi.Alternative a underscore.js

Sembra che underscore.js si adatti al conto, ma sarei interessato a esplorare altre opzioni. Underscore ha oltre 60 funzioni mentre ne ho solo bisogno.

Ad esempio, mi aspetto che alcune librerie datatable includano tali funzionalità, ma non so dove cercare.

+0

si può sempre provare solo escludendo l'* manciata di funzioni/metodi * è necessario formare il [fonte] (http://documentcloud.github.com/underscore/docs/underscore.html) – rlemon

+0

Sulla base Raynos 'rispondo, in realtà sto pensando che dovrei togliere quello che mi serve dallo spessore dell'ES5. – Christophe

risposta

8

Si chiama JavaScript arr.filter, arr.sort, arr.length.

È possibile applicare qualsiasi metodo di array su un array, quelli più popolari sono filter, map e reduce, È possibile creare operazioni più complesse combinandole.

Se volete iterare oggetti utilizzano

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

sottolineatura è utile se si vive in un mondo ES3, ma ES5 ha tutto il necessario, tutto sottolineatura non fa altro che aggiungere pesantezza su di esso.

+21

'arr.length'? Non ti dà il numero di pirati nel tuo programma? ;) –

+2

Io vivo in un mondo in cui IE 8 e anche IE 7 sono ancora popolari ... http://kangax.github.com/es5-compat-table/ – Christophe

+4

@Christophe [ES5-shim] (https: // github.com/kriskowal/es5-shim) problema risolto. – Raynos

5

Si consiglia di esaminare i seguenti due librerie:

+0

Grazie.Apparentemente il secondo funziona solo su matrici di numeri, mentre ho bisogno di una soluzione per gli array di oggetti. – Christophe

18

So che questo è vecchio ma hai guardato a lodash? Dal sito:

Una sostituzione drop-in * per Underscore.js. [...]

Le build personalizzate semplificano la creazione di versioni leggere di Lo-Dash contenenti solo i metodi necessari. Per finire, gestiamo tutte le dipendenze dei metodi e il mapping degli alias per te.

+0

Qual è il vantaggio di Lo-Dash su Underscore? Underscore è già piccolo. – blaster

+2

@blaster: Lo-Dash è un po 'più ottimizzato. Puoi vedere alcuni bei risultati di benchmark visualizzati qui: http://dtao.github.io/lazy.js/ –

10

Date un'occhiata a lazy.js (http://dtao.github.io/lazy.js/) simile a underscore.js ma con una significativa improvment prestazioni a causa di valutazione pigra

+2

Questa libreria guadagna prestazioni solo quando vuoi concatenare più operazioni insieme. L'esecuzione di un singolo 'map()' o 'reduce()' vedrà un guadagno di prestazioni pari a zero (in alcuni casi sarà più lento in particolare rispetto a lodash). Tuttavia, i suoi guadagni in termini di prestazioni sono ** veramente ** evidenti quando si opera su set di dati molto grandi. – idbehold

+3

@idbehold: dipende dall'ambiente e dalla dimensione dell'array, poiché i diversi motori JavaScript si comportano in modo molto diverso. Su Chrome, ad esempio, anche per i piccoli array e senza concatenare Lazy.js ha prestazioni migliori di Lo-Dash. Ma su Firefox, hai ragione che Lo-Dash è più veloce in questo scenario. –

1

lowscore è destinato ad essere una sottolineatura molto leggero:

  • è possibile require solo le funzioni necessarie
  • possono ridurre la dimensione JS di circa 15k minificati o di circa 50k non minificati.