2016-08-20 14 views
0

ネストされたオブジェクトを持つ配列を任意の値で検索し、見つかったオブジェクトを返して新しい配列に配置したいとします。子のネストされたオブジェクトを含むオブジェクトの配列

現在、私が持っている:

var json = { 
    'offices': [{ 
     "home_id": "1", 
     "price": "925", 
     "sqft": "1100", 
     "num_of_beds": "2", 
     "num_of_baths": "2.0", 
     "types": { 
      "0": "Internet", 
      "1": "msn", 
      "2": "aol" 
     } 
    }, { 
     "home_id": "2", 
     "price": "1425", 
     "sqft": "1900", 
     "num_of_beds": "4", 
     "num_of_baths": "2.5", 
     "types": { 
      "0": "Internet", 
      "1": "google", 
      "2": "virgin" 
     } 
    }] 
} 

var theOffices = json.offices; 

var result = $.grep(theOffices, function (h) { 
    return h.home_id == 1 
    && h.price == 925 
}); 

console.log(result) 

私はネストされた... Ieがどのように私はこの使用を延長する、しかし、これが唯一の第一の目的で検索し、上記のように検索する$ .grepをない使用することができます$ .grepを使って 'types'を反復処理する - 例えば 'msn'を得るために??

お問い合わせください:) :)最後の6時間、毛を引っ張っています!

+0

あなたはこれを自分で書く必要はありません、あなたの操作を行います。以下をチェックしてください!あなたはロダッシュのような図書館を見ましたか? –

+0

明確にするには、 'search(theOffices、 'msn')'のように呼び出せる関数を用意し、 'msn'が値として現れるすべてのオブジェクトの配列を返すようにしたいのですか?プロパティ、またはその「子」オブジェクトの任意のプロパティの値を任意の深さに設定できますか? –

答えて

0

これを行うには、配列フィルタ()を使用できます。

var json = { 
 
    'offices': [{ 
 
     "home_id": "1", 
 
     "price": "925", 
 
     "sqft": "1100", 
 
     "num_of_beds": "2", 
 
     "num_of_baths": "2.0", 
 
     "types": { 
 
      "0": "Internet", 
 
      "1": "msn", 
 
      "2": "aol" 
 
     } 
 
    }, { 
 
     "home_id": "2", 
 
     "price": "1425", 
 
     "sqft": "1900", 
 
     "num_of_beds": "4", 
 
     "num_of_baths": "2.5", 
 
     "types": { 
 
      "0": "Internet", 
 
      "1": "google", 
 
      "2": "virgin" 
 
     } 
 
    }, { 
 
     "home_id": "1", 
 
     "price": "925", 
 
     "sqft": "1980", 
 
     "num_of_beds": "6", 
 
     "num_of_baths": "9.5", 
 
     "types": { 
 
      "0": "InterNope", 
 
      "1": "google", 
 
      "2": "virgin" 
 
     } 
 
    } 
 
    ] 
 
} 
 

 
var theOffices = json.offices; 
 

 
var results = theOffices.filter(function(f) { 
 
    return f.home_id == "1" && f.price == "925"; 
 
}); 
 

 
console.log("res"); 
 
console.log(results);

関連する問題