cat*_*use -2 javascript arrays grouping javascript-objects
我有一个像这样的对象数组:
entries: [
{
id:1,
text: "Lorem ipsum",
timeStamp:"Thu, 01 Jun 2018"
},
{
id:3,
text:"Lorem ipsum",
timeStamp:"Thu, 24 May 2018"
},
{
id:4,
text: "Lorem ipsum",
timeStamp:"Thu, 24 May 2018"
}
]
Run Code Online (Sandbox Code Playgroud)
现在我希望能够将它们分组到“存档”数组中,如下所示:
archive: [
{
monthyear: May 2018,
entries: 2
},
{
monthyear: June 2018,
entries: 5
}
]
Run Code Online (Sandbox Code Playgroud)
想知道我应该使用什么样的数组函数来获得预期的结果。
您可以使用reduce
方法按日期对数组项进行分组,并toLocaleString
使用方法来获取月份和年份。
const data = [{"id":1,"text":"Lorem ipsum","timeStamp":"Thu, 01 Jun 2018"},{"id":3,"text":"Lorem ipsum","timeStamp":"Thu, 24 May 2018"},{"id":4,"text":"Lorem ipsum","timeStamp":"Thu, 24 May 2018"}]
const result = data.reduce((r, {timeStamp}) => {
let dateObj = new Date(timeStamp);
let monthyear = dateObj.toLocaleString("en-us", { month: "long", year: 'numeric' });
if(!r[monthyear]) r[monthyear] = {monthyear, entries: 1}
else r[monthyear].entries++;
return r;
}, {})
console.log(Object.values(result))
Run Code Online (Sandbox Code Playgroud)