检查 jQuery.each 中的最后一次迭代

Check for last iteration in jQuery.each

我们如何检查 jQuery.each() 循环的最后一次迭代?我的循环正在迭代来自 $.ajax 请求的对象。

jQuery.ajax({
  url: "<?php echo $this->getUrl('xs4arabia/index/getFetchrOrderLogs/'); ?>",
  type: "GET",
  data: {
    tracking_id: tracking_id
  },
  dataType: "json",
  success: function(data) {
    jQuery.each(data, function(key, value) {
      console.log(value);
    })
  }
});

传递给 each() 处理函数的第一个参数是数组中当前元素的索引(尽管您当前已将其命名为 key)。您可以将其与数组的长度进行比较以找出您当前的位置:

$.each(data, function(index, value) {
  var isLastElement = index == data.length -1;
  if (isLastElement) {
    console.log('last item')
  }

  console.log(value);
};

这是一个使用本机 forEach() 方法的附加示例:

data.forEach((val, i) => {
  var isLastElement = index == data.length -1;
  if (isLastElement) {
    console.log('last item')
  }

  console.log(value);
});

每个都传递给您的功能键和值。根据数据的长度检查键(索引)。

if (key == data.length- 1) {
              console.log('Last field');
          }

可以查看data的长度,与key进行比较(注意第一个key为0)

 jQuery.ajax({
        url: "<?php echo $this->getUrl('xs4arabia/index/getFetchrOrderLogs/'); ?>",
        type: "GET",
        data: {tracking_id: tracking_id},
        dataType: "json",
        success: function (data) {
        var arrLength = data.length;
        jQuery.each(data, function (key, value) {
              if( key == arrLength - 1 ) {
                  /* this is the last one */
              }
              console.log(value);
        },
 })

每个函数的第一个参数等于索引。

因此,您可以将索引与数据长度进行比较。

使用 div 标签查看此示例:

$(document).ready(function(){
 var len = $('div').length;
 $('div').each(function(index){
   if (index === (len - 1))
    alert('Last index');
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div>1</div>
<div>2</div>
<div>3</div>

这是另一个使用包含数组 属性 的对象的示例:

var data = {
 myArray:[1,2,3]
}

$(document).ready(function(){
 var len = data.myArray.length;
 $.each(data.myArray,function(index,value){
   if (index === (len - 1))
    alert(index);
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

虽然其他答案是正确的,但我个人最喜欢这种方法,只需编写您自己的计数器即可:

var counter = 0; 
 
$(yourselector).each(function(index,element){
   
        counter++; 

        if( counter == $(yourselector).length )
        {
            // Last Element
        }
        else
        {
           // Not last Element
        }
   
 });