Дата сортировки поля мм / дд / гггг из массива массивов - PullRequest
0 голосов
/ 21 мая 2018

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

Это данные, которые я получаю (около 20+, но я привожу один пример с некоторыми заполненными примерами данных)

address: "1212 Test Ave"
address2: ""
checkNumber : ""
city: "La Grange"
country: ""
email: "test-email@yahoo.com"
firstName: "John"
id: "103138"
lastName: "Dough"
middleName: ""
organization: ""
partnerId: "108765.1"
paymentAmount: "$5.00 "
paymentDate: "7/30/2015"
paymentType: "CASH"
phoneNumber: "(999)999-9999"
spouseFirstName: ""
spouseLastName: ""
spouseTitle: ""
state: "IL"
title: "Mr. & Mrs."
zipCode: "60525-2544"

В массиве более 20 таких элементов, называемых "вкладами".Как можно отсортировать этот массив по paymentDate "mm / dd / yyyy".Очевидно, что сначала будет отсортирован год, затем месяц, а затем день.

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

Он также неправильно сортирует дни, только месяцы / год.Годы - это отдельный массив, из которого я извлек все даты для другой цели.

this.years.sort(function (a, b) { return a - b });

Но я пытаюсь отсортировать весь массив, указанный в первом блоке кода, по дате.

Если бы кто-нибудь мог помочь мне или направить меня в правильном направлении, это было бы огромной помощью!

Спасибо!

Дополнительная информация с использованием метода @mplungjan.Это вывод всего этого при отправке в таблицу.

Picture Of Table After Date Sorted

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Для сортировки требуется date.getTime () - date.getTime ()

В этом случае вы можете отключить getTime, поскольку он будет использоваться в любом случае

var contributions = [
  {paymentDate: "9/2/2014"},
  {paymentDate: "9/7/2014"},
  {paymentDate: "10/8/2015"},
  {paymentDate: "1/9/2014"},
  {paymentDate: "3/9/2015"}
]
contributions.sort(function(a, b) {
  return new Date(a.paymentDate) - new Date(b.paymentDate)
})
console.log(contributions)
0 голосов
/ 21 мая 2018

Это простое для понимания решение:

for (var i = 0; i < contributions.length; i++) {
    var dateI = new Date(contributions[i].paymentDate);
    for (var j = i + 1; j < contributions.length; j++) {
        var dateJ = new Date(contributions[j].paymentDate);
        if (dateI > dateJ) {
            var aux = contributions[i];
            contributions[i] = contributions[j];
            contributions[j] = aux;
            dateI = dateJ;
        }
    }
}

Если вы хотите уже существующее решение, то:

contributions.sort(function(a, b) {
    return new Date(a.paymentDate) - new Date(b.paymentDate);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...