2016-04-27 86 views
0

我有一个使用JQuery的每个函数遍历的对象。但是,当我尝试使用length属性时,发布在this stack overflow post中的解决方案不起作用。当我尝试获取长度属性值时,我在控制台中得到了未定义,我相信这是因为我正在遍历一个对象而不是一个数组。检查JQuery中每个函数的最后一个元素

我的代码:

$.each(attributes, function(key, value) { 
     attrKey = key; 
     attrVal = value; 
     console.log(attributes.length); //returns undefined 
     //do something if it is the last element 
}); 
+0

对象别t有一个长度属性...这就是为什么你得到未定义,请尝试'Object.keys(属性).length' – JonH

+0

你应该使用Javascript原生'为...在',jQuery是有点矫枉过正像这样 – Derek

+0

是的,这就是为什么我不知道如何检查它是否是最后一个元素,因为其他职位使用检查它是否是最后一个元素的长度。由于长度在这种情况下不起作用,所以如何检查最后一次迭代? –

回答

0

尝试

var index = 1; 
$.each(attributes, function(key, value) { 
    if(Object.keys(attributes).length == index) 
    { 
     // Do something 
    } 
    index++; 
}); 
2

尝试纯Javascript来代替:

for (var key in attributes) { 
    var value = attributes[key]; 
    // process key,value... 
} 

编辑:

如果你想在object拿到最后一个键/值,就可以“T。 Javascript对象是无序的,这意味着它们不会跟踪何时进行额外的键/值分配。如果订单很重要,我会建议将attributes更改为对象的array,其中每个对象都是单个键/值,或者使用第三方库,如 - https://github.com/trentrichardson/Ordering

如果你想获得在attributes按键的数量,使用Object.keys

Object.keys(attributes).length 
0

每@ PaulFrench的评论:

length = Object.keys(attributes).length; 
if(n < length) { 
     //do something 
}