Javascript 节点JS |根据名称和日期差异对项目进行分组
问题陈述 我正试图根据我所能做到的公司名称来组织工作经验。但是,我只想在它们是连续工作时对它们进行分组。LinkedIn也实现了同样的逻辑。 我认为需要一种基于名称和日期差异对项目进行分组的递归方法。 比如说Javascript 节点JS |根据名称和日期差异对项目进行分组,javascript,node.js,group-by,lodash,Javascript,Node.js,Group By,Lodash,问题陈述 我正试图根据我所能做到的公司名称来组织工作经验。但是,我只想在它们是连续工作时对它们进行分组。LinkedIn也实现了同样的逻辑。 我认为需要一种基于名称和日期差异对项目进行分组的递归方法。 比如说 const data = [ { Position: '1' CompanyName: 'Microsoft', StartDate: '2017-01-01', EndDate: '2017-04-01' }
const data = [
{
Position: '1'
CompanyName: 'Microsoft',
StartDate: '2017-01-01',
EndDate: '2017-04-01'
},
{
Position: '2'
CompanyName: 'Microsoft',
StartDate: '2017-04-01',
EndDate: '2017-10-01'
},
{
Position: '3'
CompanyName: 'Amazon',
StartDate: '2017-10-01',
EndDate: '2018-02-01'
},
{
Position: '4'
CompanyName: 'Microsoft',
StartDate: '2018-03-04',
EndDate: '2018-10-04'
}
];
目前,我可以使用以下代码在NodeJS中按公司名称分组
代码
现在我的输出是
[
CompanyName: 'Microsoft': [
{
Position: '1'
StartDate: '2017-01-01',
EndDate: '2017-04-01'
}, {
Position: '2'
StartDate: '2017-04-01',
EndDate: '2017-10-01'
}, {
Position: '4'
StartDate: '2018-03-04',
EndDate: '2018-10-04'
}
],
CompanyName: 'Amazon' :
[
{
Position: '3'
StartDate: '2017-10-01',
EndDate: '2018-02-01'
}
]
]
预期产量
因此,由于第4位不是连续日期,因此不应将其分组,对此有何想法?
如果日期差超过一个月,我不想分组。在纯JavaScript中,我将使用reduce来完成任务。还请让我知道这是否完成了所需的任务
var数据=[{位置:'1',公司名称:'Microsoft',起始日期:'2017-01-01',结束日期:'2017-04-01'},{位置:'2',公司名称:'Microsoft',起始日期:'2017-04-01',结束日期:'2017-10-01'},{位置:'3',公司名称:'SaClient',起始日期:'2017-10-01',结束日期:'2018-02-01'},{职位:'4',公司名称:'Microsoft',起始日期:'2018-03-04',结束日期:'2018-10-04'}];
var结果=
data.reduceAc,{CompanyName,…rest}=>{
acc[公司名称]=acc[公司名称]| |[];
ifacc[CompanyName]。长度>0{
lastEndDt=acc[CompanyName][acc[CompanyName].length-1].EndDate;
差异=Math.ceilMath.absnew DatelastEndDt-new Daterest.StartDate/1000*60*60*24;
如果差异您可以使用预期输出共享虚拟数组数据吗?完成,我已使用虚拟数据更新了任何其他建议?看起来很有趣?问题是您的预期输出不是有效的数组或对象。它应该是一致的。位置4应作为单独的array@TusharNarang我已经更新了我的答案,看看我对她做了什么e是一家公司的所有无序数据都将进入该公司的单独数组。好的,它将是递归的,或者如果发现两个非连续日期,它将创建两个单独的microsoft_无序。@TusharNarang nope,它将合并到同一个数组中。假设发现两个以上的无序公司,它将移动到同一个键Microsft_无序的,那么我将对无序的应用相同的逻辑,对吗?
[
CompanyName: 'Microsoft': [
{
Position: '1'
StartDate: '2017-01-01',
EndDate: '2017-04-01'
}, {
Position: '2'
StartDate: '2017-04-01',
EndDate: '2017-10-01'
}, {
Position: '4'
StartDate: '2018-03-04',
EndDate: '2018-10-04'
}
],
CompanyName: 'Amazon' :
[
{
Position: '3'
StartDate: '2017-10-01',
EndDate: '2018-02-01'
}
]
]
[
CompanyName: 'Microsoft': [
{
Position: '1'
StartDate: '2017-01-01',
EndDate: '2017-04-01'
}, {
Position: '2'
StartDate: '2017-04-01',
EndDate: '2017-10-01'
}
],
CompanyName: 'Amazon' :
[
{
Position: '3'
StartDate: '2017-10-01',
EndDate: '2018-02-01'
}
],
CompanyName: 'Microsoft' :
[
{
Position: '4'
StartDate: '2018-03-04',
EndDate: '2018-10-04'
}
]
]