gpt4 book ai didi

javascript - 使用下划线 groupby 按多个属性对一组对象进行分组

转载 作者:行者123 更新时间:2023-11-30 08:50:59 25 4
gpt4 key购买 nike

我想根据其中包含的对象的两个属性对我的 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}

最佳答案

来自fine manual :

groupBy _.groupBy(list, iterator, [context])

Splits a collection into sets, grouped by the result of running each value through iterator. If iterator is a string instead of a function, groups by the property named by iterator on each of the values.

因此您可以将函数传递给 _.groupBy,结果将根据该函数的结果进行分组。这只是意味着您需要一个函数来为您的组生成简单的键。不幸的是,JavaScript 中的对象键是字符串,因此您不能(可靠地)使用返回键数组的函数,就像您在 Ruby 中所做的那样,但您可以稍微弄乱它:

_(a).groupBy(function(o) {
return o.event_title + '\x00' + o.other_key;
});

我猜 '\x00' 不会出现在您的 event_title 中,但您可以使用适合您数据的任何分隔符。

演示:http://jsfiddle.net/ambiguous/hwg3p/

关于javascript - 使用下划线 groupby 按多个属性对一组对象进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17886645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com