2016-04-05 8 views
1

オブジェクトからどのアイテムがどのアレイに属しているかを調べる必要があります「建物」または「ガーデン」;だから、アイテムが属するオブジェクトの部分を確認します

、私はそれを使用することができますので、それは「建物」や「庭園に属しているかどうかを確認する必要が

a.data.gardens.item_id = 122 

に対応

var id = '122' 

...私はこれを持っていると言いますこのように。

if (result === 'buildings') { 
    // Do this 
} else if (result === 'gardens') { 
    // Do this 
} 

私はそれがすでにこのプロジェクトで頻繁に使用されていますようunderscore.jsを使用したいです、バニラのJSソリューションが簡単な場合は必須ではありません。ここで

は、オブジェクトは、この使用して、アンダースコアのようにそれを行うことができます

var a = { 
    'object_handle': 'handle', 
    'something_else': 'ladela', 
    'some_other_thing': 'other thing', 
    'data':{ 
     'object_id': 120, 
     'buildings':[ 
     { 
      'item_id':120, 
      'title':'Some title', 
     }, 
     { 
      'item_id':121, 
      'title':'Some other title' 
     } 
     ], 
     'some_other_thing': 'other thing', 
     'gardens':[ 
     { 
      'item_id':122, 
      'title':'Some title' 
     }, 
     { 
      'item_id':123, 
      'title':'Some other title' 

     } 
     ] 
    } 
} 

感謝

答えて

1

あなたはを使用することができますコレクションを確認する:

var id = 122; 

var isGarden = _.some(a.data.gardens, {item_id: id}); 
var isBuilding = _.some(a.data.buildings, {item_id: id}); 
+0

これは完全に機能します。使用前の答え._findどこに、あなたが好きな理由がありますか?それはより演奏的ですか? – MikeeBee

+0

一部はtrueまたはfalseを返し、findWhereはオブジェクトを返します。オブジェクトがコレクションに含まれているかどうかだけを知りたいので、私はいくつかを選択しました。 –

+0

優秀、明確にしていただきありがとうございます。 – MikeeBee

0

です:

var find_id=122; 

//here a is the object defined above in the OP question. 

if(_.findWhere(a.data.buildings, {item_id: find_id})){ 
    console.log("buildings") 
} else if(_.findWhere(a.data.gardens, {item_id: find_id})){ 
    console.log("gardens") 
} 

作業コードhere

+1

完璧に、ありがとう! – MikeeBee

関連する問題