检查$ .each()中是否还有更多元素

时间:2013-01-07 17:54:41

标签: javascript jquery

我正在使用jQuery的$.each()方法来遍历几个对象。有没有办法找出$.each()方法中是否还有更多的对象?

类似的东西:

$.each(data, function(o, myObject) {
    if(data.hasMoreObjects) {
        // append something 
    } else {
        // append nothing
    }
});

5 个答案:

答案 0 :(得分:4)

传递给回调函数的第一个参数是index。您可以将其与length进行比较,以确定是否有更多元素。

$.each(data, function(index, myObject) {
    if (index === (data.length - 1)) {
        // this is the last
    } else {
        // there are more coming
    }
});

根据data的不同,您可能需要使用其他一些属性来代替data.length。例如,如果data是对象,则使用Object.keys(data).length

docs for $.eachdocs for Object.keys

答案 1 :(得分:3)

反过来会更容易。例如,如果你有:

a b c d

你想在它们之间插入|,你可以这样做:

a| b| c| d

换句话说,通过循环并向除了最后一个之外的所有人添加|。但是对于第一种方法,工作方式会更容易:

a |b |c |d

因为你可以这样做:

var isfirst = true;
$.each(data, function(o, myObject) {
    if( isfirst) {
        isfirst = false;
    }
    else {
        // do something
    }
});

但是,如果这是不可能的,你可能需要循环一次来计算元素(除非它是一个数组而不是一个对象,在这种情况下.length会很好),然后添加一个迭代器给你的循环。

答案 2 :(得分:3)

所有其他答案似乎都假设data数组(或者有一些属性.length),但根据jQuery page,您可以在任何对象上使用$.each

以下是获取对象的最后一个enumerable键的方法

function lastKey(o) {
    var keys = Object.keys(o);
    return keys[keys.length-1];
}

然后,您可以在$.each

中与此进行比较

答案 3 :(得分:1)

var howmany = data.length,
    i = 1;
$.each(data, function(o, myObject) {
    if(i == howmany) {
        // do something with the last
    }
    else {
        // do something with the others
    }
    i++;
}

答案 4 :(得分:1)

将索引与数据对象的长度进行比较,试试这个

$.each(data, function(index, myObject) {
 if (index === (data.length - 1)) {
    //append nothing     } else {
    // append something
 }
});