Javascript 在对象数组中保留每月的读取计数

Javascript 在对象数组中保留每月的读取计数,javascript,node.js,Javascript,Node.js,假设我有一个对象数组,如下所示: const sampleArray = [{"read":true,"readDate":2021-01-15T18:21:34.059Z}, {"read":true,"readDate":2021-01-15T18:21:34.059Z}, {"read":true,"

假设我有一个对象数组,如下所示:

const sampleArray = [{"read":true,"readDate":2021-01-15T18:21:34.059Z},
                     {"read":true,"readDate":2021-01-15T18:21:34.059Z},
                     {"read":true,"readDate":2021-02-15T18:21:34.059Z},
                     {"read":true,"readDate":2021-04-15T18:21:34.059Z},
                     {"read":true,"readDate":2021-12-15T18:21:34.059Z}]
我想保持每个月的读取计数,如果缺少该月,则应给出0

预期O/p:

 [2,1,0,1,0,0,0,0,0,0,0,12] => In jan -2 count, feb - 1 count, april - 1 count, dec - 1 count and rest months there is no read data.
 [2,1,0,1,0,0,0,0,0,0,0,1] => In jan -2 count, feb - 1 count, april - 1 count, dec - 1 count and rest months there is no read data.
为此,我尝试:

let invoiceInfoArray = [];
var d = new Date();
var n = d.getMonth();
for (let i = 0; i < sampleArray.length; i++) {
     if (sampleArray[i].readDate.getMonth() + 1 == n) {
           invoiceInfoArray.push(invoiceInfo[i])
      }
}

如果有人需要任何进一步的细节,请告诉我。任何指导都会非常有用。

创建一个长度为
12
的新
数组
,并将
readDate
作为
Date
对象,从
getMonth
获取月份

您可以使用
12
元素创建一个新数组,并将
0
作为前缀填充

const months = Array(12).fill(0);
// or
const months = new Array(12).fill(0);
读到

const sampleArray=[{
读:没错,
阅读日期:“2021-01-15T18:21:34.059Z”
},
{
读:没错,
阅读日期:“2021-01-15T18:21:34.059Z”
},
{
读:没错,
阅读日期:“2021-02-15T18:21:34.059Z”
},
{
读:没错,
阅读日期:“2021-04-15T18:21:34.059Z”
},
{
读:没错,
阅读日期:“2021-12-15T18:21:34.059Z”
},
];
常量月份=数组(12)。填充(0);
//或
//常量月份=新数组(12)。填充(0);
sampleArray.forEach((obj)=>{
const month=新日期(obj.readDate).getMonth();
++月[月];
});

控制台日志(月)上一次索引结果的显示方式
12
。应该是1
[2,1,0,1,0,0,0,0,0,0,1]
是的,这是正确的,我已经编辑了问题,我无法遵循常量月份=数组(12)。填充(0);这部分…它到底做了什么?使用
array
函数创建一个新数组,它将数组值填充为
0
Ohh,因此在开始时,只有数组被0填充,值被替换了,对吗?很好,您可以使用
构造函数
创建一个包含
12
元素的数组。非常感谢你。
const months = Array(12).fill(0);
// or
const months = new Array(12).fill(0);