具有年龄组并查找最大日期的JavaScript分组数组

具有年龄组并查找最大日期的JavaScript分组数组,javascript,arrays,grouping,Javascript,Arrays,Grouping,我试图为每个年龄组实现类似的功能,我想找到最大的日期,然后与今天的日期进行比较,得到日期差异并存储到另一个单独的数组中。以下是一些示例输入: //removed 我将数组按升序排序: frequentarr.sort(function(a, b) { da = new Date(a.date); db = new Date(b.date); if (da == db) { return 0; } return da > db ? 1

我试图为每个年龄组实现类似的功能,我想找到最大的日期,然后与今天的日期进行比较,得到日期差异并存储到另一个单独的数组中。以下是一些示例输入:

//removed
我将数组按升序排序:

frequentarr.sort(function(a, b) {
    da = new Date(a.date);
    db = new Date(b.date);
    if (da == db) {
        return 0;
    }
    return da > db ? 1 : -1;
});
console.log(frequentarr);
我的年龄组数组:

var ageGroup = ['>=80', '70-79', '60-69', '50-59', '40-49', '30-39', '20-29', '10-19', '0-9'];
我不知道如何根据年龄组对帐户进行分组,然后为每个年龄组找到最大的日期。然后,与今天的日期进行比较,找出日期差异


有什么想法吗?谢谢

我首先按照日期对
frequentarray
进行排序,然后使用reduce对其进行简单分组。我使用的是地图,所以你只需使用

m.get(<ageGroup>)[0];
m.get()[0];
let frequentarr=[{accountID:“-Ks8mWcr2x08gEbSCSuJ”,年龄:67岁,性别:“女性”,品牌:“Akira”,日期:“2017/01/09”},
{accountID:“-Ks8mWh4j7fv7XaQyygJ”,年龄:11岁,性别:“女性”,品牌:“Akira”,日期:“2017/01/14”},
{accountID:“-Ks8mWh4j7fv7XaQyygJ”,年龄:11岁,性别:“女性”,品牌:“Akira”,日期:“2017/01/14”},
{accountID:“-Ks8mWayOns5WnK0xu3e”,年龄:62岁,性别:“男性”,品牌:“Akira”,日期:“2017/01/15”},
{accountID:“-Ks8mWYnb4fu1AT9vR8X”,年龄:40岁,性别:“男性”,品牌:“Akira”,日期:“2017/01/21”},
{accountID:“-Ks8mWf0deAAVlOSb2qS”,年龄:21岁,性别:“男性”,品牌:“Akira”,日期:“2017/02/08”},
{accountID:“-Ks8mWbH4YQhXg9DZvjG”,年龄:12岁,性别:“男性”,品牌:“Akira”,日期:“2017/02/18”},
{accountID:“-Ks8mWZpiUOt8aXyEY22”,年龄:56岁,性别:“女性”,品牌:“Akira”,日期:“2017/02/29”},
{accountID:“-Ks8mW_HvNJ3RKCz6QZk”,年龄:24岁,性别:“男性”,品牌:“Akira”,日期:“2017/03/03”},
{accountID:“-KS8MWGBMSBH6LRSMU4”,年龄:22岁,性别:“男性”,品牌:“Akira”,日期:“2017/03/17”},
{accountID:“-Ks8mWgceHTuJsBObl_C”,年龄:66岁,性别:“女性”,品牌:“Akira”,日期:“2017/03/25”},
{accountID:“-Ks8mWYhd7WuUGJMUTzx”,年龄:62岁,性别:“女性”,品牌:“Akira”,日期:“2017/04/03”},
{accountID:“-Ks8mWhQ-TsvAbvS0Sk2”,年龄:59岁,性别:“男性”,品牌:“Akira”,日期:“2017/05/18”},
{accountID:“-Ks8mWY4PQ3stDWTlriB”,年龄:39岁,性别:“男性”,品牌:“Akira”,日期:“2017/06/14”},
{accountID:“-Ks8mWYMZw8YTs6P UCk”,年龄:19岁,性别:“男性”,品牌:“Akira”,日期:“2017/07/03”},
{accountID:“-Ks8mWcm1zYkSQN2fD9c”,年龄:31岁,性别:“男性”,品牌:“Akira”,日期:“2017/07/10”},
{accountID:“-Ks8mWalbiAq35e10lZy”,年龄:24岁,性别:“男性”,品牌:“Akira”,日期:“2017/07/14”},
{accountID:“-Ks8mWjmbuBtmzzJ2IPu”,年龄:36岁,性别:“女性”,品牌:“Akira”,日期:“2017/07/24”},
{accountID:“-Ks8mWjmbuBtmzzJ2IPu”,年龄:36岁,性别:“女性”,品牌:“Akira”,日期:“2017/07/24”},
{accountID:“-Ks8mWbNJ53rNuspHlQe”,年龄:73岁,性别:“男性”,品牌:“Akira”,日期:“2017/08/17”},
{accountID:“-Ks8mWcvM1-w0GAl-eHs”,年龄:63岁,性别:“男性”,品牌:“Akira”,日期:“2017/10/01”},
{accountID:“-Ks8mWhvTEp83PziAxpp”,年龄:16岁,性别:“男性”,品牌:“Akira”,日期:“2017/10/14”},
{accountID:“-Ks8mWdGfSrC-5n8ywNs”,年龄:70岁,性别:“女性”,品牌:“Akira”,日期:“2017/10/18”},
{accountID:“-Ks8mWdf0LfFKWH8 YBF”,年龄:29岁,性别:“男性”,品牌:“Akira”,日期:“2017/12/03”},
{accountID:“-Ks8mWhtA-3ExwVUWZC_”,年龄:15岁,性别:“女性”,品牌:“Akira”,日期:“2017/12/07”},
{accountID:“-Ks8mWX4R6inD83AO4rZ”,年龄:47岁,性别:“女性”,品牌:“Akira”,日期:“2017/12/19”},
{accountID:“-Ks8mWh4j7fv7XaQyygJ”,年龄:11岁,性别:“女性”,品牌:“Akira”,日期:“2017/12/25”},
{accountID:“-Ks8mWadHFzJ1VGmN60k”,年龄:26岁,性别:“男性”,品牌:“Akira”,日期:“2017/12/28”});
让年龄组=['80-1000','70-79','60-69','50-59','40-49','30-39','20-29','10-19','0-9'];
函数getAgeRange(年龄){
返回年龄组。查找(e=>{
设s=e.split('-');
返回年龄>=s[0]&年龄新日期(b.Date)-新日期(a.Date))。减少((a,b)=>{
设r=getAgeRange(b.age);
返回a.set(r,a.has(r)→a.get(r).concat(b):[b])
},新地图);

console.log(m);
您可以为组计算年龄并除以
10
,检查日期是否大于存储的日期。如果不大于存储的日期,则取实际日期

var数组=[{年龄:67,日期:“2017/01/09”},{年龄:11,日期:“2017/01/14”},{年龄:11,日期:“2017/01/14”},{年龄:62,日期:“2017/01/15”},{年龄:40,日期:“2017/01/21”},{年龄:21,日期:“2017/02/08”},{年龄:12,日期:“2017/02/18”},{年龄:56,日期:“2017/02/29”},{年龄:24,日期:“2017/03/03”},{,{年龄:66,日期:“2017/03/25”},{年龄:62,日期:“2017/04/03”},{年龄:59,日期:“2017/05/18”},{年龄:39,日期:“2017/06/14”},{年龄:19,日期:“2017/07/03”},{年龄:31,日期:“2017/07/10”},{年龄:24,日期:“2017/07/14”},{年龄:36,日期:“2017/07/24”},{年龄:36,日期:“2017/07/07/24”},{年龄:73,日期:“2017/08”{“2017/10/01”{年龄:16,日期:“2017/10/14”},{年龄:70,日期:“2017/10/18”},{年龄:29,日期:“2017/12/03”},{年龄:15,日期:“2017/12/07”},{年龄:47,日期:“2017/12/19”},{年龄:11,日期:“2017/12/25”},{年龄:26,日期:“2017/12/28”},
组=[];
array.forEach(函数(o){
var组=数学下限(o.age/10);
如果(组[组]>=o.date){
返回;
}
组[组]=开始日期;
});
console.log(组);

.as console wrapper{max height:100%!important;top:0;}
由于您按年龄对数据进行了排序,因此可以使用控件分隔符来实现这一点。您还可以预先按年龄组将数据划分为子数组,如果这对您来说更容易。仅供参考,您的日期格式是“可排序的”使用字符串比较,因此您不必在排序回调函数中创建日期对象。这可能会加快速度,尤其是在处理大量数据时。
da==db
将始终为false。它们是不同的对象(即使它们包含