我正在尋找一個處理對象數組的JavaScript庫,主要用於過濾,排序和分組/計數。underscore.js的替代品
似乎underscore.js符合法案,但我有興趣探索其他選項。 Underscore有60多種功能,而我只需要少量功能。
例如,我期望一些數據庫包含這些功能,但我不知道在哪裏看。
我正在尋找一個處理對象數組的JavaScript庫,主要用於過濾,排序和分組/計數。underscore.js的替代品
似乎underscore.js符合法案,但我有興趣探索其他選項。 Underscore有60多種功能,而我只需要少量功能。
例如,我期望一些數據庫包含這些功能,但我不知道在哪裏看。
這就是所謂的JavaScript arr.filter
,arr.sort
,arr.length
。
您可以在陣列上應用任何陣列方法,流行的方法是filter
,map
和reduce
,您可以通過組合這些方法來構建更復雜的操作。
如果你想遍歷對象使用
Object.keys(o).forEach(function (key) {
var val = o[key];
...
});
,如果你生活在一個世界ES3下劃線是有用的,但ES5有你需要的一切,都是強調所做的是在它的上面添加膨脹。
'arr.length'?我沒有給你的程序中的海盜數量? ;) – 2012-01-16 18:14:46
我生活在一個IE 8甚至IE 7仍然流行的世界...... http://kangax.github.com/es5-compat-table/ – Christophe 2012-01-16 18:29:23
@Christophe [ES5-shim](https:// github.com/kriskowal/es5-shim)問題解決了。 – Raynos 2012-01-16 18:30:15
採取類似underscore.js但顯著的性能改良效果看看lazy.js(http://dtao.github.io/lazy.js/)由於懶惰的評估
當您想要將多個操作鏈接在一起時,此庫只會獲得性能。執行單個'map()'或'reduce()'將會看到零性能增益(在某些情況下,它實際上會變慢),尤其是與lodash相比。但是,在非常大的數據集上運行時,其性能增益非常明顯。 – idbehold 2013-05-20 18:42:40
@idbehold:它取決於環境和數組的大小,因爲不同的JavaScript引擎行爲非常不同。例如,在Chrome上,即使對於小型數組而言,Lazy.js的鏈接也要優於Lo-Dash。但在Firefox上,你說得對,Lo-Dash在這種情況下速度更快。 – 2013-05-20 21:59:44
lowscore旨在成爲一款非常輕便的下劃線:
require
只需要你需要的功能
你總是可以嘗試只剝出的功能*一小撮/方法*您需要形成[來源](http://documentcloud.github.com/underscore/docs/underscore.html)基於Raynos – rlemon 2012-01-16 18:39:16
'答案,我實際上認爲我應該從ES5墊片中去掉我需要的東西。 – Christophe 2012-01-16 19:19:01