我有一个数组,其中包含从当前日期起最近七天内加入的用户的数据。例如users=['19 Dec', '21 Dec', '21 Dec']
在此数组中,有三个用户在最近七天内加入。我正在尝试使用此函数查找唯一的匹配项。
let occurences = users.reduce(function (acc, curr) {
return acc[curr] ? ++acc[curr] : (acc[curr] = 1), acc;
}, {});
'
它返回包含以下密钥对的对象:{19 Dec: 1, 21 Dec: 2}
我希望用0和它各自的日期填充对象中缺失的值。因此,最终的O/P将是:{19 Dec: 1, 20 Dec: 0, 21 Dec: 2, 22 Dec: 0, 23 Dec: 0, 24 Dec: 0, 25 Dec: 0}
有人能帮我解决这个问题吗?
我希望用0和它各自的日期填充对象中缺失的值。因此,最终的O/P将是:{19 Dec: 1, 20 Dec: 0, 21 Dec: 2, 22 Dec: 0, 23 Dec: 0, 24 Dec: 0, 25 Dec: 0}
3条答案
按热度按时间guykilcj1#
也许类似这样的东西对你有用。我使用的是this SO answer中代码的修改版本。格式的设置多亏了this SO answer。
首先,让我们构建一个包含过去7天的数组。
接下来,假设这是一个JSON对象,以日期-月份简称作为键,以非零用户数作为值。
我们将创建一个工作副本,然后根据需要进行修改。您不必这样做-您可以用不同的方式声明
occurences
,并修改它,但我使用的是副本。接下来,我们将遍历
dateArray
,并检查occurences
中是否存在与dateArray
中的当前值相对应的键。这将输出:
有关完整脚本,请参见the following fiddle。
ulmd4ohb2#
与上面的答案相同,但使用纯javascript。
ulmd4ohb3#
我建议采用以下解决方案,用typescript编写:
1.创建一个包含过去7天的数组,并根据
users
-array中的日期进行格式化。1.迭代最近7个日期(使用
map
-运算符),并对每一天应用filter
,以找出在给定的一天有多少用户加入。getDailyRegistrations()
将返回一个object,并将日期作为键,将给定日期的用户注册数作为值。