[英]Using underscore groupby to group an array of objects by more than one attribute
我想通過包含在其中的對象的兩個屬性對對象的JavaScript數組進行分組。
我嘗試過強調下划線groupBy,並且似乎一次只接受一個屬性。
_.groupBy([{'event_date':'2013-10-11', 'event_title':'Event 2'}, {'event_date':'2013-01-11', 'event_title':'Event 1'}], 'event_title')
我的問題是...有沒有一種方法可以將對象數組按其兩個屬性分組。
就像在Ruby中一樣
[#<struct Event event_date=2013-10-11, event_title=Event 2>, #<struct Event event_date=2013-01-11, event_title=Event 1>].group_by{|p| p.event_date and p.event_title}
從精美的手冊中 :
groupBy
_.groupBy(list, iterator, [context])
將集合分為若干集合,並按通過iterator運行每個值的結果進行分組。 如果iterator是字符串而不是函數,請在每個值上按iterator命名的屬性進行分組。
因此,您可以將一個函數傳遞給_.groupBy
,結果將按該函數的結果分組。 這只是意味着您需要一個可以為您的組生成簡單鍵的函數。 不幸的是,JavaScript中的對象鍵是字符串,因此您不能(可靠地)使用返回鍵數組的函數,就像您在Ruby中一樣,但是您可能會感到有些困惑:
_(a).groupBy(function(o) {
return o.event_title + '\x00' + o.other_key;
});
我猜想'\\x00'
不會出現在您的event_title
但是您可以對數據使用任何分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.