我正在使用jQuery的$.each()
方法来遍历几个对象。有没有办法找出$.each()
方法中是否还有更多的对象?
类似的东西:
$.each(data, function(o, myObject) {
if(data.hasMoreObjects) {
// append something
} else {
// append nothing
}
});
答案 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
,
答案 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
}
});