2016-04-27 87 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 
} 
相關問題