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

时间:2016-09-08 14:33:48

标签: javascript jquery ajax 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);
            },
})

5 个答案:

答案 0 :(得分:4)

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

$.each(data, function(index, value) {
    var isLastElement = index == data.length -1;

    if (isLastElement) {
        console.log('last item')
    }

    console.log(value);
},

答案 1 :(得分:1)

您可以检查数据的长度并将其与密钥进行比较(请注意,第一个密钥为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);
        },
 })

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

df.groupby('NAME').agg(
lambda grp: [grp.loc[grp[col] > 0, 'FATAL#'].sum() if col != 'INJURY#' else grp[col].sum() 
             for col in grp if col != 'FATAL#'])


>>>df

NAME    FATAL#  INJURY# ALCOHOL CELL
A   11  2   6   0
B   10  4   3   5