【问题标题】:Load last records first using for loop in JavaScript在 JavaScript 中首先使用 for 循环加载最后一条记录
【发布时间】:2019-10-11 07:17:43
【问题描述】:

正确的数据是按升序加载,但我想按降序显示记录。 我正在使用 for 循环一次获取 5 条记录。 我厌倦了反转 for 循环,但数据仍然按升序加载。 Temp 是从 api 加载 json 的位置。

代码:

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

我试过这个但是这个 din 工作,就像它仍然按升序加载数据:

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"
  }
]

【问题讨论】:

    标签: javascript jquery json for-loop


    【解决方案1】:

    您可以先按time 降序排列resp

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

    然后像往常一样迭代resp

    【讨论】:

    • 这是理想的解决方案。即使在单击按钮时添加新记录也能正常工作
    【解决方案2】:

    使用 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>

    【讨论】:

    • 当您在按钮单击时显示记录时,这不起作用。它只是在顶部添加 5 条最新记录,但最初只显示旧记录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2023-03-22
    相关资源
    最近更新 更多