Frage In Javascript, Wie ermittelt man, ob eine Objekteigenschaft existiert und nicht leer ist?


Angenommen, ich habe das nächste Javascript-Objekt:

var errors = {
    error_1: "Error 1 description",
    error_2: "Error 2 description",
    error_3: "",
    error_4: "Error 4 description"
};

Wie kann ich feststellen, ob die Immobilie? error_1 existiert in der errors Objekt und ist nicht auch leer?


5
2018-02-17 00:12


Ursprung


Antworten:


if (errors.hasOwnProperty('error_1') && errors['error_1'] )

Die Methode hasOwnProperty kann verwendet werden, um zu bestimmen, ob ein Objekt die angegebene Eigenschaft als direkte Eigenschaft dieses Objekts hat.

Das errors[key] woher key ist ein Zeichenfolgenwert überprüft, ob der Wert existiert und nicht null ist

Überprüfen Sie, ob es nicht leer ist, wo es dann eine Zeichenfolge ist typeof errors['error_1'] === 'string' && errors['error_1'].length wo Sie nach der Länge einer Zeichenfolge suchen

Ergebnis:

if (errors.hasOwnProperty('error_1') && typeof errors['error_1'] === 'string' && errors['error_1'].length)

Jetzt, wenn Sie eine Bibliothek wie verwenden unterstreichen Sie können eine Reihe von Hilfsklassen wie _.isEmpty  _.has(obj,key) und _.isString()


10
2018-02-17 00:14



Um Ihre Frage genau zu beantworten (existiert und nicht leer) und vorausgesetzt, Sie beziehen sich nicht auf leere Arrays, könnten Sie verwenden

typeof errors.error_1 === 'string' && errors.error_1.length

3
2018-02-17 00:18



Hier ist eine andere gute Antwort ich gefunden und wollte teilen (nach Änderung an meine Bedürfnisse anpassen):

if ("property_name" in object_name && object_name.property_name !== undefined){
   // code..
}

Wenn ich das also auf mein Beispiel anwenden möchte, sieht es so aus:

if ("error_1" in errors && errors.error_1 !== undefined){
   // code..
}

1
2018-02-17 01:44