1 javascript backbone.js underscore.js
我想通过包含在其中的对象的两个属性来分组我的JavaScript对象数组.
我试过下划线groupBy,它似乎一次只接受一个属性.
_.groupBy([{'event_date':'2013-10-11', 'event_title':'Event 2'}, {'event_date':'2013-01-11', 'event_title':'Event 1'}], 'event_title')
Run Code Online (Sandbox Code Playgroud)
我的问题是......有没有办法按两个属性对一组对象进行分组.
就像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}
Run Code Online (Sandbox Code Playgroud)
从精细手册:
通过...分组
_.groupBy(list, iterator, [context])将集合拆分为集合,按照通过迭代器运行每个值的结果进行分组.如果迭代器是字符串而不是函数,则按每个值上的迭代器命名的属性进行分组.
因此,您可以传递一个函数,_.groupBy结果将按该函数的结果进行分组.这只意味着您需要一个能够为您的组生成简单键的函数.不幸的是,JavaScript中的对象键是字符串,所以你不能(可靠地)使用一个返回像你在Ruby中那样的键数组的函数,但你可以稍微改变一下:
_(a).groupBy(function(o) {
return o.event_title + '\x00' + o.other_key;
});
Run Code Online (Sandbox Code Playgroud)
我猜'\x00'你的内容不会出现,event_title但你可以使用任何分隔符来处理数据.
演示:http://jsfiddle.net/ambiguous/hwg3p/
| 归档时间: |
|
| 查看次数: |
6742 次 |
| 最近记录: |