2017-08-29 2 views
0

Ich habe folgendes Objekt Ich bin mir nicht sicher, wie es weitergeht.Suchwert in Objekt

Object image

Wie kann ich alle Objekte durchlaufen und wählen Sie den InhaltArray und Suche nach einem Wert x. Und wenn der Wert x im Objekt ist muss ich den Objekttitel von dem Objekt erhalten, wo der Wert gefunden wurde.

Kann mir jemand einen Hinweis geben, wie ich dieses Problem lösen kann?

+0

gibt es verschachtelte Objekte oder gibt es nicht? – zfrisch

Antwort

1

Sie ... in iterieren das Objekt verwenden können, und indexOf(), um zu prüfen, ob ein Schlüssel im Array-Inhalt vorhanden ist. so etwas wie dieses:

function searchVal(x){ 
    for(var key in obj){ 
     if(obj[key].hasOwnProperty('content') && obj[key].content.includes(x)) 
      return key; 
    } 
} 
+0

Sie könnten .contains (x) anstelle von .indexOf (x)> = 0 verwenden – zfrisch

+0

@zfrisch no its includes ... –

+0

danke für den Vorschlag Jungs, Code aktualisiert. – Dij

1

Sie können for...in verwenden, um die Objektschlüssel zu durchlaufen, dann eine regelmäßige for Schleife die content Array für Ihren spezifischen Wert zu überprüfen:

function findTitle(x) { 
    for (var key in obj) { 
     for (var i = 0; i < obj[key].content.length; i++) { 
      if (obj[key].content[i] === x) { 
       return key; 
      } 
     } 
    } 
} 
0
let name = Object.values(obj /*your main object*/) 
     .find(obj => obj.content.includes(x)) 
     .name; 

Sie das erste Objekt in den Objekte Werte Ihrer Haupt obj finden konnte, die eine Eigenschaft Inhalt hat die x enthält, dann erhalten Sie den Namen von diesem Objekt.

Verwandte Themen