Массив быстрой сортировки по заданному c значению - PullRequest
0 голосов
/ 19 июня 2020

Полный код на https://codepen.io/CodeLegend27/pen/ExPZRxa

действительно читал похожие статьи, но не смог его решить

, поэтому мой массив выглядит так:

Array

У меня это l oop

for (let i = 0; i < ultraarr.length; i++) {
  ultraarr.sort();
  $(".row").append(ultraarr[i].display())
}

, это вызывает отображение функции, которая является функцией класса, и в основном вставляет данные в html. Что я хочу от него СДЕЛАТЬ:

Я хочу, чтобы он был упорядочен в соответствии с возрастающими датами. исследовал материал ab, но не вижу решения для меня

CLASS FUNCTION для вашей INFO:

 display() {
    let content =
      `
      <div class="col-sm-12 col-md-6 col-lg-3">
      <div class="card">
      <img class="card-img-top d-sm-none d-md-block" src="img/${this.img}" alt="${this.name}">
      <div class="card-body">
        <h5 class="card-title">${this.name}</h5>
        <p class="card-text">City: ${this.city} Zip-Code ${this.zip}
        <br>
        <label> Event Infos </label>
        <ul>
        <li>${this.edate}</li>
        <li>${this.etime}</li>
        <li>${this.eprice}</li>
        <li>${this.eweb}</li>
        </ul>
        <p>Created: ${this.dates.toLocaleString('de-AT')}
        </p>
            </div></div>
    </div>
      ` ;
    return content;
  }

btw до того, как даты будут переданы конструктору класса, который они создали следующим образом: new Date(2011, 1, 1, 3, 25), и когда я консоль журнал, например typeof (newClassItem.dates), он говорит об объекте, а не о числе или строке, поэтому я действительно не знаю, как это сделать - я подумал, может быть, с .valueOf?

1 Ответ

0 голосов
/ 19 июня 2020

Когда вы сохраняете даты, сохраните их, используя метод JSON в объекте Date. Передайте функцию сортировки функции сортировки массива.

var array = [
  {'name':'test1','date':'2020-06-19T14:21:31.633Z'},
  {'name':'test2','date':'2020-07-30T12:22:53.113Z'},
]

function sortDate(rec1,rec2){
  return new Date(rec1.date) < new Date(rec2.date) ? -1 : 1
}

array.sort(sortDate)

console.log(array)

Это сортировка массива в возрастающем порядке. Если вы хотите отсортировать его в порядке убывания, либо измените знак сравнения на '>', либо поменяйте местами -1 и 1.

Если внутренний массив хранит поле даты как тип данных даты, вы можете сделать следующее

function sortDate(rec1,rec2){
  return rec1.date < rec2.date ? -1 : 1
}

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