2012-07-24 83 views
0
family = { 
    'person1':[{"id":"1111","name":"adam", "sex":"male", "born":"USA"}], 
    'person2':[{"id":"2222","name":"sarah", "sex":"female", "born":"Canada"}], 
    'person3':[{"id":"3333","name":"adam", "sex":"male", "born":"USA"}] 
}; 

鑑於上述家族對象,我如何提取其中一個人物對象的所有屬性(id,name,sex,born)一個特定的id(或名稱)值?比如:id = 1111用javascript/jquery查找大對象內的對象及其屬性

所以最好我能得到一個新的對象personInQuestion我可以操縱,其中:

personInQuestion = {"id":"1111","name":"adam", "sex":"male", "born":"USA"} 

回答

4

遍歷的對象,搶相匹配的元素。

var search = 1111; 

var personInQuestion = {}; 
for(var x in family){ 
    var item = family[x][0]; 
    if(item.id == search){ 
     personInQuestion = item; 
     break; 
    } 
} 
+0

謝謝,看起來它會很好地工作。乾杯 – 2012-07-24 16:40:36

+0

不客氣,很高興我可以幫忙:-D – 2012-07-24 16:40:54

0

我不認爲jQuery是這樣做的最好的工具,而不是我建議你考慮看看at the Where method that the Backbone library offers。不知道這是否會過度殺傷。

用法是這樣的:

var friends = new Backbone.Collection([ 
    {name: "Athos",  job: "Musketeer"}, 
    {name: "Porthos", job: "Musketeer"}, 
    {name: "Aramis",  job: "Musketeer"}, 
    {name: "d'Artagnan", job: "Guard"}, 
]); 

var musketeers = friends.where({job: "Musketeer"}); 

alert(musketeers.length); 
+3

我會說爲此集成Backbone可能會過度,因爲Backbone更多的是一個框架。使用像[Underscore](http://underscorejs.org/)這樣更實用的庫可能更合適。 – 2012-07-24 16:12:38

0

的jQuery不會爲JSON(JavaScript對象)數據提供了選擇,所以你需要遍歷對象。例如:

result = null; 
$.each(family, function(i, v) { 
    if (v.id === "1111" && v.name === "adam" ...) { 
    result = v; 
    return; 
    } 
}); 
0

這裏的羅布Hruska的的suggestion(在評論)使用Underscore的例子。

family = { 
    'person1':[{"id":"1111","name":"adam", "sex":"male", "born":"USA"}], 
    'person2':[{"id":"2222","name":"sarah", "sex":"female", "born":"Canada"}], 
    'person3':[{"id":"3333","name":"adam", "sex":"male", "born":"USA"}] 
}; 

var searchId = 1111; 

var person = _.find(family, function(item) { return item[0].id == searchId; })[0];