所以基本上,我在一个范围之间有一个日期数组:
['2019-01-01, '2019-01-02', '2019-01-03'...'2019-01-30'];
还有一个对象数组,其中包含上述范围内的日期的数据:
[{date: '2019-01-01', count: 2'}, {date: '2019-01-05', count: 4'}...{date: '2019-01-25', count: 3}]
请注意,如果在特定日期在第一个数组中的那些范围之间没有计数,则它根本不会出现在第二个数组中。因此,如果第一个数组中有30个日期,那么第二个数组中可能只有25个日期。
最终,我想以以下形式构建对象数组:
[
{ date: '2019-01-01',
count: 2
},
{
date: '2019-01-02',
count: 0
},
];
因此,该数组将包含范围内的每个日期的对象(从第一个数组开始),并获得计数(从第二个数组开始)。如果日期不在第二个数组中,则它将在对象数组中将计数设置为0。
我很难解决这个问题。我已经尝试过各种循环,但是一无所获。谁能指出我正确的方向?
答案 0 :(得分:0)
创建一个与range
相同值的新数组。
对于range
的每个值,请检查counts
是否已经存在计数。
如果有一个,将其退回。如果没有,则返回一个新的“ 0 count”。
代码版本:
const range = [
'2019-01-01',
'2019-01-02',
'2019-01-03',
'2019-01-04',
'2019-01-05',
'2019-01-06',
'2019-01-07',
];
const counts = [
{date: '2019-01-01', count: 2},
{date: '2019-01-05', count: 4},
{date: '2019-01-07', count: 3},
];
const result = range.map(date =>
counts.find(element => element.date === date) || { date, count: 0 });
console.log(result);