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 (または名前) 値を持つ人物オブジェクトの 1 つのすべてのプロパティ (ID、名前、性別、生まれ) を抽出するにはどうすればよいでしょうか? 例: id=1111

したがって、理想的には、操作できる新しいオブジェクト personInQuestion を取得できます。

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

4 に答える 4

4

オブジェクトをループし、一致する要素を取得します。

var search = 1111;

var personInQuestion = {};
for(var x in family){
    var item = family[x][0];
    if(item.id == search){
        personInQuestion = item;
        break;
    }
}
于 2012-07-24T16:10:40.503 に答える
0

Underscoreを使用するための Rob Hruska の提案(コメント)の例を次に示します。

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];
于 2012-07-25T01:57:19.053 に答える
0

jQuery がこれに最適なツールだとは思いません。代わりに、Backbone ライブラリが提供する Where メソッドを参照することをお勧めします。それがやり過ぎかどうかはわかりません。

使い方はこんな感じです。

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);
于 2012-07-24T16:11:20.287 に答える
0

jQuery は JSON (JavaScript オブジェクト) データのセレクターを提供しないため、オブジェクトを反復処理する必要があります。例えば:

result =  null;
$.each(family, function(i, v) {
  if (v.id === "1111" && v.name === "adam" ...) {
    result = v;
    return;
  }
});
于 2012-07-24T16:12:31.810 に答える