JavaScript:生成和筛选/创建对象的日期数组.即skype聊天历史视图



我在过去的几个小时里一直在尝试这个方法,我搜索了很多,但找不到任何解决方案。我正在从数据库中获取数据,并且有时间戳。

我想按日期过滤记录,即如果有2020-08-20日期的数据,那么创建一个对象,然后在一个对象中设置所有日期的数据。

我正在获取的对象:

[
{
"id": 16,
"activity": "Amazon 16",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:13.000Z",
"updated_at": "2020-08-25T12:14:13.000Z"
},
{
"id": 15,
"activity": "Amazon 15",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:10.000Z",
"updated_at": "2020-08-25T12:14:10.000Z"
},
{
"id": 14,
"activity": "Amazon 14",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:07.000Z",
"updated_at": "2020-08-25T12:14:07.000Z"
},
{
"id": 13,
"activity": "Amazon 13",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:14:03.000Z",
"updated_at": "2020-08-25T12:14:03.000Z"
},
{
"id": 12,
"activity": "Amazon 12",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:59.000Z",
"updated_at": "2020-08-25T12:13:59.000Z"
},
{
"id": 11,
"activity": "Amazon 11",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:51.000Z",
"updated_at": "2020-08-25T12:13:51.000Z"
},
{
"id": 10,
"activity": "Amazon 10",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:46.000Z",
"updated_at": "2020-08-25T12:13:46.000Z"
},
{
"id": 9,
"activity": "Amazon 9",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:40.000Z",
"updated_at": "2020-08-25T12:13:40.000Z"
},
{
"id": 8,
"activity": "Amazon 8",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:33.000Z",
"updated_at": "2020-08-25T12:13:33.000Z"
},
{
"id": 7,
"activity": "Amazon 7",
"type": "delivery_arrival",
"url": "www.google.com",
"created_at": "2020-08-25T12:13:30.000Z",
"updated_at": "2020-08-25T12:13:30.000Z"
}
]

我想要的是:

[
{
"date": "2020-08-20",
"activities": [
{
"activity": "name1"
},
{
"activity": "name2"
}
]
},
{
"date": "2020-08-19",
"activities": [
{
"activity": "name1"
},
{
"activity": "name2"
}
]
}
]

此外,还有分页和数据必须降序排列。

您可以使用https://momentjs.com/和具有CCD_ 1的滤波器然后用CCD_ 2进行排序;我还推荐Ramda的Group By(如果你已经在那里了,Ramda的过滤器和排序是不可变的,Array.prototype.sort的排序不是(

var ParshedArray = {}
var dates = []
result.forEach(function (row) {
var a = row.date.getFullYear()
var b = row.date.getMonth()+1
var c = row.date.getDate()
var d = a+"-"+b+"-"+c
console.log(d)
var objDate = ParshedArray[d]
if (!objDate) {
objDate = {
Date: d,
Massages: []
}
ParshedArray[row.date] = objDate
dates.push(objDate)
}
objDate.Massages.push({
id: row.id,
text: row.text,
date: row.date
})
})
console.log(dates)

最新更新