2017-01-25 14 views
1

Ich habe eine JS Objekt von Attributen Attr genannt, die verschiedene Anordnungen von Attributen wie Color[], Manufacturer[], Brands[] usw.Überprüfen Sie, ob JS Objekt enthält Array

Wie kann ich überprüfen, ob die Attr enthält eine bestimmte Eigenschaft enthalten Array? Zum Beispiel, wie kann ich überprüfen, ob AttrColor[] enthält?

habe ich versucht, diese aber es funktioniert nicht:

if (Attr.hasOwnProperty('Color')) { 
    console.log("Has Colors array") 
} 

enter image description here

+0

[So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve). – Andreas

+0

zeigen, wie Attr definiert ist. – charlietfl

+0

Attr ist etwas, das ich vom Server – user829174

Antwort

1

attrs Da sich ein Array von Objekten ist, sind Sie in Ihrer Lösung in der Nähe, aber man braucht eine weitere Ebene zu gehen.

Um zu überprüfen, ob das erste Objekt in attrs (dh attr[0] könnte man natürlich eine Schleife durch und auch so etwas wie attr[i] verwenden...) Ein gegebenes Array hat, würden Sie am besten mit diesem Ansatz sein:

if (attrs[0].hasOwnProperty("Color")) { 
    . . . do something . . . 
} 

. . . oder auch:

if (attrs[0].Color !== undefined) { 
    . . . do something . . . 
} 

Entweder funktionieren wird, können beide besser geeignet für verschiedene Situationen (zum Beispiel der ersten könnte besser sein, wenn Sie im Namen des Arrays als Variable sind vorbei, die zweite, wenn Sie Suchen nach einem bestimmten Array-Namen).


Update:

Für das Protokoll, auf das, was in Ihrem Screenshot gezeigt wird, ist die Struktur von Ihnen attr Variable ist:

attr = [ 
    { 
     AspectRatio: [...], 
     Binding: [...], 
     Brand: [...], 
     Color: [...], 
     EAN: [...], 
     EANList: [...] 
    } 
] 

, das besser zeigen sollten, warum Sie haben bevor du deine Prüfung machst.

+1

undefined es kein string.You ist, muss 'attrs verwenden [0] .Color! = Undefined'. –

+0

Ich denke, es funktioniert für ... Was ist das Problem Alexandru? – user829174

+1

@ user829174, bitte schauen Sie hier: https://jsfiddle.net/h5av96a2/1/ –

0

Sie müssen prüfen, ob Color Array vorhanden ist, und es ist ein array. Nehmen wir an, dass Attr=attrs[0] (entsprechend Ihrem Update).

if (Attr.Color!=undefined && Array.isArray(Attr)) { 
    console.log("Has Colors array"); 
} 
+0

OP erhalten Code hinzugefügt, so jetzt ist es nicht richtig .... – epascarello

0

Sie können, wenn die Verwendung der Array.isArray Funktion machen, überprüfen die Color ein Array ist. Als Vorsichtsmaßnahme können Sie auch überprüfen, ob die Color-Eigenschaft vorhanden ist oder nicht. In Ihrem aktualisierten Beitrag scheint es, dass Sie diese Prüfung ignorieren können.

if (attrs[0].Color && Array.isArray(attrs[0].Color)) { 

    console.log("Has Colors array") 
} 
Verwandte Themen