Преобразуйте массив свойств объекта даты с помощью typeScript - PullRequest
1 голос
/ 24 сентября 2019

В моем массиве данных есть поле даты, которое в данный момент недоступно для чтения по каналу, который я пытаюсь создать.Поэтому я пытаюсь преобразовать дату в формат, прежде чем он попадет в мою трубу.У меня уже есть фильтр в конструкторе компонентов, который упорядочивает поле по дате.После этого я хочу затем преобразовать дату в этот формат и дать мне новый массив.

0: {dateTime: "2018-09-22T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
1: {dateTime: "2019-09-08T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
2: {dateTime: "2019-09-09T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
3: {dateTime: "2019-09-10T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
4: {dateTime: "2019-09-11T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}

Выше приведено после сортировки в порядке даты ... Я хочу что-то вроде этого:

0: {dateTime: "22-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
1: {dateTime: "21-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
2: {dateTime: "20-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
3: {dateTime: "19-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}
4: {dateTime: "18-09-2018", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam."}

Вот мой конструктор, вы увидите трубу фильтра заказов здесь, и после этого я пытаюсь преобразовать новый массив в еще более новый для меня, чтобы использовать.

  constructor(private contactLogService: ContactLogService, private orderPipe: OrderPipe, private datePipe: DatePipe) {
    this.sortedCollection = orderPipe.transform(this.contactLogService.contactLog, 'dateTime');
    this.formattedDateCollection = datePipe.transform(this.sortedCollection.dateTime, 'yyyy-dd-MM'); // new line
    console.log("contact log sorted", this.sortedCollection);
    console.log("Formatted Date", this.formattedDateCollection);
  }

Свышеуказанный .sateTime не существует для типа 'any' - ниже мои декаляры

contactLog: any;
sortedCollection: any[] = [];
formattedDateCollection: any; //new

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Это можно сделать через ванильный JavaScript:

fooFunction(keyVal) {
    const grades = [
        { dateTime: "2018-09-22T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-08T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-09T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-10T10:17:12.162Z", notes: "Lorem ipsum dolor sit amet, quo ei simul congue ex…oluptua dignissim per, habeo iusto primis ea eam." }
        , { dateTime: "2019-09-11T10:17:12.162Z" }
    ];

    let desiredData= grades.map(g => {
        return {
            dateTime: this.transformDate(g.dateTime),
            notes: g.notes
        };
    });
    console.log(desiredData);
}


transformDate(dateTime){
     return new Date(dateTime).toJSON().slice(0,10);
}
1 голос
/ 24 сентября 2019

Вы можете попробовать следующий код:

  this.formattedDateCollection = this.sortedCollection.map(x => {
      const y = Object.assign({}, x);
      y.dateTime = this.datePipe.transform(x.dateTime, "yyyy-dd-MM");
      return y;
    });

PS: Если вы запрашиваете http для извлечения данных, лучше переместить логику из конструктора в ngOnInit ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...