对日期数组进行排序

时间:2018-03-07 09:14:30

标签: sorting date

如何对日期数组进行排序。

2 个答案:

答案 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 {}