2013-11-01 131 views
0

我試圖在執行搜索以找到特定項目的索引後返回給定數組中的下一項。在搜索後循環遍歷數組

我有下面的代碼,其所處的指標,但它不能返回一個值

var myArray = [{"id" : "51fcd6fcf22d94c881000005","creator" : true}, 
       {"id" : "5244abaa0c11b3da22000012","creator" : false}, 
       {"id" : "52027f4354c8a8fd33000008","creator" : false}] 

function nextElement(id) { 
    var i = myArray.length; 
    while(i--) { 
     if(myArray[i].id == id) break; 
    } 
     console.log(i) <-- This returns '0' which is correct 
     console.log(myArray[i++%myArray.length]); <-- This returns the object value at 0 too 
}; 

nextElement('51fcd6fcf22d94c881000005') 

什麼不工作是當我運行函數返回,我進入了對象函數

我想能夠傳遞一個ID到函數中並返回下一個項目,但如果它是數組中的最後一項,那麼我希望它循環並返回第一個項目。

例如,如果在ID傳遞爲52027f4354c8a8fd33000008,那麼我會希望它在0即{"id" : "51fcd6fcf22d94c881000005","creator" : true}

回答

2

變化:

myArray[i++%myArray.length] 

到:

myArray[++i%myArray.length] 

記住這便是,如果++是變量之前,返回之前遞增的方式;如果它在變量之後,則在保存要返回的值後遞增。

1

返回對象與++i更換i++。前者評估爲舊值i,然後遞增該變量。