2012-01-16 104 views
10

我正在尋找一個處理對象數組的JavaScript庫,主要用於過濾,排序和分組/計數。underscore.js的替代品

似乎underscore.js符合法案,但我有興趣探索其他選項。 Underscore有60多種功能,而我只需要少量功能。

例如,我期望一些數據庫包含這些功能,但我不知道在哪裏看。

+0

你總是可以嘗試只剝出的功能*一小撮/方法*您需要形成[來源](http://documentcloud.github.com/underscore/docs/underscore.html)基於Raynos – rlemon 2012-01-16 18:39:16

+0

'答案,我實際上認爲我應該從ES5墊片中去掉我需要的東西。 – Christophe 2012-01-16 19:19:01

回答

8

這就是所謂的JavaScript arr.filterarr.sortarr.length

您可以在陣列上應用任何陣列方法,流行的方法是filter,mapreduce,您可以通過組合這些方法來構建更復雜的操作。

如果你想遍歷對象使用

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

,如果你生活在一個世界ES3下劃線是有用的,但ES5有你需要的一切,都是強調所做的是在它的上面添加膨脹。

+21

'arr.length'?我沒有給你的程序中的海盜數量? ;) – 2012-01-16 18:14:46

+2

我生活在一個IE 8甚至IE 7仍然流行的世界...... http://kangax.github.com/es5-compat-table/ – Christophe 2012-01-16 18:29:23

+4

@Christophe [ES5-shim](https:// github.com/kriskowal/es5-shim)問題解決了。 – Raynos 2012-01-16 18:30:15

5

你可能要考慮以下兩個庫:

+0

謝謝。顯然,第二個只適用於數組數組,而我需要一個對象數組的解決方案。 – Christophe 2012-01-16 19:57:01

18

我知道這是舊的,但你看lodash?來自網站:

Underscore.js的插入式替換*。

自定義構建可以輕鬆創建僅包含您需要的方法的輕量級版本的Lo-Dash。最重要的是,我們爲您處理所有的方法依賴和別名映射。

+0

Lo-Dash比Underscore有什麼優勢?下劃線已經很小。 – blaster 2013-05-10 18:04:07

+2

@blaster:Lo-Dash更加優化。您可以在這裏看到一些很好的可視化基準測試結果:http://dtao.github.io/lazy.js/ – 2013-05-20 22:02:44

10

採取類似underscore.js但顯著的性能改良效果看看lazy.js(http://dtao.github.io/lazy.js/)由於懶惰的評估

+2

當您想要將多個操作鏈接在一起時,此庫只會獲得性能。執行單個'map()'或'reduce()'將會看到零性能增益(在某些情況下,它實際上會變慢),尤其是與lodash相比。但是,在非常大的數據集上運行時,其性能增益非常明顯。 – idbehold 2013-05-20 18:42:40

+3

@idbehold:它取決於環境和數組的大小,因爲不同的JavaScript引擎行爲非常不同。例如,在Chrome上,即使對於小型數組而言,Lazy.js的鏈接也要優於Lo-Dash。但在Firefox上,你說得對,Lo-Dash在這種情況下速度更快。 – 2013-05-20 21:59:44

1

lowscore旨在成爲一款非常輕便的下劃線:

  • 可以require只需要你需要的功能
  • 可以減少JS大小約15k縮小,或約50k未縮小。