2012-01-29 23 views

回答

2

循環通過陣列找到與特定值的對象,然後從數組中取出,並作爲第一插入:

$.each(user_images, function(index) { 
    if(this.href === my_href) { 
     user_images.unshift(user_images.splice(index, 1)[0]); 
     return false; //stop the loop 
    } 
}); 

user_images[0].href應該my_href現在

+0

注意到jQuery標籤+1,直到_after_發佈我的答案後才發佈。 (哦,現在有和沒有答案...) – nnnnnn 2012-01-29 05:07:38

2

您沒有「JSON數組」,您有一個JavaScript數組(JSON是數據的字符串表示形式)。

但無論如何,你似乎說的是,你有一個數組,user_images,它包含了每一個有href屬性的對象,和你想它,以便與特定href屬性的對象是首次在陣列。您正在查找的特定值存儲在名爲my_href的變量中。如果我說對了,請繼續閱讀...

我猜你當前的代碼看起來有點像這樣:

var user_images = []; 
for (value in someObjectThatYouDoNotShowInYourQuestion) 
    user_images.push({'href' : value.href, 'title' : value.title }); 

要找到有href等於數組中的項my_href你可以簡單地遍歷數組,直到找到一個項目,然後該變量使用.splice() method從當前位置刪除其與unshift() method將其添加到數組的開頭:

var item, 
    i; 
for (i = 0; i < user_images.length; i++) { 
    if (user_images[i].href === my_href) { 
     item = user_images[i]; 
     user_images.splice(i,1); 
     user_images.unshift(item); 
     break; 
    } 
} 

如果沒有配套配件g項目被發現數組將不會改變。

注意:您實際上並不需要我的代碼中顯示的item變量。爲了便於閱讀,我把它放在了一個明顯的地方,那就是你正在存儲一個你正在查找的對象的引用,然後將它移除,然後將它放在數組的開頭,但是假設.splice()方法返回一個數組已刪除的項目(或多個)可以在該單線更換for環路內的那些三行:

user_images.unshift(user_images.splice(i,1)[0]); 
相關問題