【发布时间】:2018-10-11 11:47:24
【问题描述】:
我有下面的数组结构
[
{
"id": "8gFUT6neK2I91HIVkFfy",
"element": {
"id": "8gFUT6neK2I91HIVkFfy",
"archived": false,
"updatedOn": {
"seconds": 1538653447,
"nanoseconds": 836000000
}
},
"groupBy": "pr"
},
{
"id": "9jHfOD8ZIAOX4fE1KUQc",
"element": {
"id": "9jHfOD8ZIAOX4fE1KUQc",
"archiveDate": {
"seconds": 1539250407,
"nanoseconds": 62000000
},
"archived": false,
"updatedOn": {
"seconds": 1538655984,
"nanoseconds": 878000000
}
},
"groupBy": "pr"
},
{
"id": "CeNP27551idLysSJOd5H",
"element": {
"id": "CeNP27551idLysSJOd5H",
"archiveDate": {
"seconds": 1539248724,
"nanoseconds": 714000000
},
"archived": false,
"updatedOn": {
"seconds": 1538651075,
"nanoseconds": 235000000
}
},
"groupBy": "pr"
},
{
"id": "Epd2PVKyUeAmrzBT3ZHT",
"element": {
"id": "Epd2PVKyUeAmrzBT3ZHT",
"archiveDate": {
"seconds": 1539248726,
"nanoseconds": 226000000
},
"archived": false,
"updatedOn": {
"seconds": 1538740476,
"nanoseconds": 979000000
}
},
"groupBy": "pr"
}
]
以下代码进行排序
示例 JSfiddle
let sortedData = this.arraydata.sort((a:any, b:any) => { return Number(new Date(b.element.date).getTime()) - Number(new Date(a.element.date).getTime()) })
这不会产生任何影响。
【问题讨论】:
-
不要发布文字图片。而且,我不知道你在做什么,但你可以简单地做
(a, b) => b.element.date - a.element.date。 -
.sort 方法不会改变数组,它会返回一个新数组。问题可能是您忘记将结果分配给 this.arraydata 吗? (它确实发生了变异,是错误的)
-
我尝试了很多变体,比如简单地 a.element.date、new date(a.element.data) 然后尝试 Number(new date(a.element.date),但没有任何效果
-
你能发布你的示例代码和数据吗?
-
@askerovlab No sort mutates 如果你想创建一个新数组,你可以这样做:
this.arraydata = this.arraydata.slice().sort(...
标签: javascript angular typescript sorting google-cloud-firestore