所以我試圖想一個更好的方式與下劃線做到這一點計數對象屬性名稱以及每個唯一名稱出現次數。這似乎正好是這種問題的下劃線旨在解決,但我能想到的最佳解決方案似乎不夠優雅。與underscore.js
0
A
回答
4
我不是underscore.js用戶,但我想_.groupBy()
適合這樣的場景:
var attributes = _.groupBy(list, function (item) {
return item.data.neighborhood
})
它不返回你想要的確切方式數組,但它包含了所有的信息你需要。所以你已經在attributes["foo"]
所有具有「foo」值的物品作爲neighborhood
值屬性,因此在attributes["foo"].length
中它們的數量。
1
也許有更好的方式underscore.js,但你已經可以應用其他優化:
而不是使用一個數組來跟蹤的名稱和數量的,使用name: count
地圖。這可以用一個對象來輕鬆完成:
state.attributes = _.reduce(list, function(memo, item){
var n = item.data.neighborhood;
memo['neighborhood'] = (memo['neighborhood'] || {});
memo['neighborhood'][n] = memo['neighborhood'][n] + 1 || 1;
return memo;
});
這工作,因爲如果item.data.neighborhood
是不在列表中呢,memo['neighborhood'][item.data.neighborhood]
將返回undefined
和undefined + 1
回報NaN
。
由於NaN
的計算結果爲false
,因此表達式NaN || 1
將導致1
。
+0
不錯。好多了。謝謝! – BishopZ
相關問題
- 1. 與Underscore.js
- 2. 與Underscore.JS
- 3. underscore.js與node-express
- 4. 問題與Underscore.js
- 5. 使用JavaScript的Iterables與Underscore.js
- 6. 與導軌3使用underscore.js
- 7. 查詢數組與Underscore.js
- 8. 如何排序與underscore.js
- 9. 迭代通過與underscore.js值
- 10. 使用underscore.js groupBy與Ember.js
- 11. Underscore.js - foldl與交叉點
- 12. 在underscore.js
- 13. 拼合對象的JavaScript數組與underscore.js
- 14. 使用Closure編譯器與Underscore.js _.template
- 15. 從陣列中移除項目與Underscore.js
- 16. Underscore.js - 陣列與相同的密鑰
- 17. 組和排序對象與Underscore.js
- 18. 包含與jQuery的Underscore.js不衝突
- 19. 要求JS與underscore.js不工作
- 20. 使用underscore.js
- 21. 如果Underscore.js
- 22. underscore.js:_.zip.apply示例
- 23. Underscore.js _.isElement函數
- 24. GROUPBY陣列underscore.js
- 25. Underscore.js和noconflict
- 26. Underscore.js核心
- 27. 減少與Underscore.js JavaScript的陣列(或與純javascript)
- 28. underscore.js每()未定義
- 29. 使用帶有underscore.js
- 30. 如何使用underscore.js
感謝您的回答;我應該再次嘗試groupBy,但我認爲上面的提供了有多少個街區的計數。我正在尋找有關每個社區有多少價值的計數。例如北:2,西:5,而不是社區:2. – BishopZ
'groupBy'完全符合你的要求。你將得到:'attributes [「north」]'包含一個數組,其中所有項的鄰域等於「北」,所以使用:attributes [「north」] .length和attributes [「west」] .length'你會有'2'和'5'。 – ZER0