Сначала загрузите последние записи, используя цикл for в JavaScript - PullRequest
0 голосов
/ 11 октября 2019

Право, данные загружаются в порядке возрастания, но я хочу отображать записи в порядке убывания. Я использую цикл for для получения 5 записей одновременно. Я устал перевернуть цикл for, но данные по-прежнему загружаются в порядке возрастания. Temp - это то место, где json загружается из API.

Код:

 for (i = 0; i < temp; i++) {
   const row = resp.shift();
   $('#dataRow').append(getElement(row.name, row.id, row.address, row.time));
 }

Я пробовал это, но этот гудок работает, как будто он все еще загружал данные в порядке возрастания:

for (i = temp; i >0; i--)

Я также пытался unshift, но это дает все записи как неопределенные.

Было бы хорошо, если данные загружаются по времени. Сначала самый последний.

пример json:

"data":[
  {
    "name": "demo",
    "id":1,
    "address":"not available",
    "time":"2019-10-11 11:12:53"
  },
  {
    "name": "demo1",
    "id":2,
    "address":"not available",
    "time":"2019-10-11 11:12:59"
  }
]

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Сначала можно отсортировать resp по time в порядке убывания.

resp.sort((a, b) => new Date(b.time) - new Date(a.time))

Затем выполнить итерацию resp как обычно.

0 голосов
/ 11 октября 2019

Используйте prepend для вставки в качестве первого дочернего элемента, чтобы последний заканчивался раньше всех предыдущих.

Это единственное изменение, которое необходимо внести:

$('#dataRow').prepend(getElement(row.name, row.id, row.address, row.time));

Ипросто чтобы продемонстрировать обратный порядок:

var resp = [
  '<div>one</div>',
  '<div>two</div>',
  '<div>three</div>',
  '<div>four</div>',
  '<div>five</div>',
];

$(resp).each(function() {
  $('#dataRow').prepend(this)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="dataRow"></div>
...