如何对日期数组进行排序。
答案 0 :(得分:1)
您使用的语法非常正确,应该如何。
Here's a工作人员正好展示你在做什么。
问题很可能与您用于构造releaseDate
对象的Date
的值有关。 sort函数中console.log的输出是什么?
答案 1 :(得分:0)
我更新了@JeanPaul A创建的plunker,因此您可以看到差异。在他的plunker中,他正在更新数组本身,而不是更新数组中的对象,所以我认为它需要更新。
如果查看new plunker,您可以看到差异,但它确实有效,对数组内的对象进行排序。我认为您的数据一定有问题。我添加了DatePipe来格式化日期,以便您可以使用它在UI中轻松查看日期是否正确。
Plunkr代码:
//our root app component
import {Component, NgModule, VERSION} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import { DatePipe } from '@angular/common';
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<button (click)="sort()">Sort</button>
<ul>
<li *ngFor="let date of dates">{{date | date: 'dd MM yyyy'}}</li>
</ul>
<ul>
<li *ngFor="let customer of customers">
{{customer.name}} -
{{customer.releaseDate | date: 'dd MM yyyy'}}</li>
</ul>
</div>
`,
})
export class App {
name:string;
customers: Array<any> = [
{"name": 'Mickey', "releaseDate": new Date('2012-07-12')},
{"name": 'Minnie', "releaseDate": new Date('2013-07-12')},
{"name": 'Donald', "releaseDate": new Date('2010-07-12')},
{"name": 'Pluto', "releaseDate": new Date('2014-07-12')}
]
dates:Array<Date> = [
new Date('2012-07-12'),
new Date('2013-07-12'),
new Date('2010-07-12'),
new Date('2014-07-12')
];
constructor() {
this.name = `Angular! v${VERSION.full}`
}
sort() {
this.dates.sort((a:Date, b:Date) => new Date(a).getTime() - new Date (b).getTime());
this.customers.sort((a: Customer, b: Customer) =>
new Date(a.releaseDate).getTime() - new Date (b.releaseDate).getTime());
console.log(this.customers);
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}