2016-04-05 2 views
1

Ich muss herausfinden, aus welchem ​​Array von einem Objekt ein Element gehört, "Gebäude" oder "Gärten";Finden Sie heraus, welchen Teil des Objekts ein Element gehört

Also, sage ich haben ...

var id = '122' 

die zu

a.data.gardens.item_id = 122 

entspricht ich brauche, um herauszufinden, ob es sich gehört „Gebäude“ oder „Gärten so kann ich es nutzen wie diese.

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

ich mag underscore.js verwenden, wie es bereits stark in diesem Projekt verwendet werden wird, aber es ist nicht wichtig, wenn eine Vanilla JS-Lösung einfacher ist. Hier

ist das Objekt

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' 

     } 
     ] 
    } 
} 

Vielen Dank

Antwort

1

Sieverwenden könnte, um die Sammlungen zu überprüfen:

var id = 122; 

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

Das funktioniert perfekt. Die Antwort vor der Verwendung ._findWoher gibt es einen Grund, warum Sie _.some() favorisiert haben? ist es leistungsfähiger? – MikeeBee

+0

Einige gibt wahr oder falsch zurück, findWhere gibt ein Objekt zurück. Da Sie nur wissen wollten, ob das Objekt in der Sammlung war, wählte ich etwas aus. –

+0

Ausgezeichnet, danke für die Klärung. – MikeeBee

0

Sie können es wie dieser mit Strich tun:

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") 
} 

Arbeits Code here

+1

Funktioniert perfekt, danke! – MikeeBee