Einfachste Möglichkeit, mit CoffeeScript zu überprüfen, ob ein Schlüssel im Objekt vorhanden ist


110

Was ist in CoffeeScript der einfachste Weg, um zu überprüfen, ob ein Schlüssel in einem Objekt vorhanden ist?

Antworten:


182
key of obj

Dies wird zu JavaScript kompiliert key in obj. (CoffeeScript wird verwendet, ofwenn auf Schlüssel verwiesen wird und inwenn auf Array-Werte verwiesen wird: val in arrTestet, ob valin arr. Ist .)

Die Antwort von thejh ist richtig, wenn Sie den Prototyp des Objekts ignorieren möchten. Jimmys Antwort ist richtig, wenn Sie Schlüssel mit einem nulloder undefinedWert ignorieren möchten .


2
own key of objfunktioniert höchstwahrscheinlich auch, um zusätzlich zu testen .hasOwnProperty(). Das "wahrscheinlichste" kommt von mir, dass ich es nicht versucht habe, aber diese Syntax funktioniert im Verständnis.
fliegende Schafe

2
@flyingsheep Nein, es funktioniert nur im Verständnis. Probieren Sie es aus: coffeescript.org/#try:own%20key%20of%20obj
Trevor Burnham

ah, ok :own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
fliegende Schafe

36

Das '?' Bediener prüft auf Existenz:

if obj?
    # object is not undefined or null

if obj.key?
    # obj.key is not undefined or null

# call function if it exists
obj.funcKey?()

# chain existence checks, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?.grandChildKey

# chain existence checks with function, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?().grandChildKey

16
Dies schlägt fehl, wenn der Schlüssel vorhanden ist, aber den Wert von hat null.
Mu ist zu kurz

In dem Fall, in dem man sich nicht darum kümmert, ob der Schlüssel vorhanden ist, sondern null ist, obj.key?ist dies wahrscheinlich der prägnanteste.
Andrew Mao

21
obj.hasOwnProperty(name)

(um geerbte Eigenschaften zu ignorieren)


Ich mag diese Antwort, weil key of objsie einen Fehler auslöst , wenn der Wert eine Zeichenfolge oder eine Zahl ist. Cannot use 'in' operator to search. In diesem Fall funktioniert es, wenn das Objekt nicht undefiniert und nicht null ist.
Jqualls

Dies schlägt fehl, wenn das Objekt den Wert seines Prototyps hat.
Brian M. Hunt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.