Wie kann festgestellt werden, ob ein bestimmtes Feld in den übergebenen JSON-Daten vorhanden ist?
1.obj["key"] != undefiniert
Dies ist fehlerhaft. Wenn der Schlüssel definiert ist und der Wert sehr oft undefiniert ist, liegt ein Problem mit diesem Satz vor.
2.!("key" in obj)
3.obj.hasOwnProperty("key")
Diese beiden Methoden sind besser und empfehlenswert.
Ursprüngliche Antwort:
Eigentlich ist die Prüfung auf Undefiniertheit keine genaue Methode, um zu testen, ob ein Schlüssel existiert, aber der Wert ist tatsächlich undefiniert?
var obj = { key: undefiniert };
obj["key"] != undefiniert // false, aber der Schlüssel existiert!
Sie sollten stattdessen den In-Operator verwenden:
"key" in obj // true, unabhängig vom tatsächlichen Wert
Wenn Sie überprüfen möchten, ob ein Schlüssel nicht existiert, denken Sie daran, Klammern zu verwenden:
!("key" in obj) // wahr, wenn „key“ im Objekt nicht vorhanden ist
!"key" in obj // ERROR! Entspricht „false in obj“
Oder, wenn Sie insbesondere die Eigenschaften der Objektinstanz (und nicht die geerbten Eigenschaften) testen möchten, verwenden Sie hasOwnProperty:
obj.hasOwnProperty("key") // true