2013-07-12 27 views
4

我是javascript新手,所以請原諒我,如果它的東西明顯。訪問for-in循環中的前一個鍵/值

可以說我有一個for-in循環如下...

for(var key in myObj){ 

    alert("key :" + myObj[key]); // accessing current key-value pair 

    //how do I access previous element here? 
} 

是否有可能訪問一個或下一個鍵/值對在for-in循環?

+2

你爲什麼不連鎖行業試試看..? –

回答

2

不,沒有直接的辦法。一種解決方法是使用一個for遍歷keys,而不是for..in和他們的數字指數挑選要素:

keys = Object.keys(myObj); 
for(var i = 0; i < keys.length; i++) { 
    current = keys[i]; 
    previous = keys[i - 1]; 
    next = keys[i + 1]; 
    ... 
    } 
+0

+1。是的,我想我會使用這種方法,並下降for-in循環。我期待着一些直接的方式在for-in循環中做到這一點。 –

+0

@PratikPatel:無論如何,for..in'都是一個壞主意,所以是的,請放棄它。 – georg

+0

我想避免使用Object.keys()函數,因爲這個回答中的評論http://stackoverflow.com/a/4889658/2039750其中說,「這不僅遍歷對象,而且還創建一個全新的數組所有的鍵......「 –

-1

嘗試像

var prev = ''; 
for(var key in myObj){ 

    alert("key :" + myObj[key]); // accessing current key-value pair 
    if(prev) 
     alert('Prev key :'+prev); 
    prev = myobj[key]; 
    //how do I access previous element here? 
} 
0
var lastobj = ''; 
for(var key in myObj){ 
    alert("key :" + myObj[key]); // accessing current key-value pair 

    if(lastobj) { 
     //do things with last object here using lastobjs 
    } 
lastobj = myObj[key] 
} 

賦予了新的價值lastobj最後在環路和環路中,你將有「記憶」的值。 if聲明主要是因爲第一次循環運行,當lastobj爲空時。

相關問題