Im Javascript. Wie kann ich feststellen, ob ein Feld in einem Objekt vorhanden ist?

Lesezeit: 2 Minuten

Benutzer-Avatar
Khoi

Und natürlich möchte ich dies codeweise tun. Es ist nicht so, dass es keine Alternative zu diesem Problem gibt, mit dem ich konfrontiert bin, nur neugierig.

Dadurch werden Attribute ignoriert, die durch die Prototypenkette weitergegeben werden.

if(obj.hasOwnProperty('field'))
{
    // Do something
}

Benutzer-Avatar
Peter Kruithof

AKTUALISIEREN: Verwenden Sie die hasOwnProperty Methode, wie Gary Chambers vorschlägt. Die folgende Lösung wird funktionieren, wird jedoch als bewährte Methode angesehen hasOwnProperty.

if ('field' in obj) {
}

  • Beachten Sie, dass Sie auf die gleiche Weise das Vorhandensein eines Schlüssels in einem assoziativen Array überprüfen können (das liegt daran, dass normalerweise objects sind tatsächlich assoziative Arrays)

    – Andrea Zilio

    13. August 2010 um 11:21 Uhr

  • Einige Linters werden sich über diese Syntax beschweren. Es ist sicherer, hasOwnProperty zu verwenden, wie von @GaryChambers vorgeschlagen

    – Jayd

    2. Juni 2014 um 14:11 Uhr


  • Einverstanden, ich habe meine Antwort aktualisiert, um andere Leute in die richtige Richtung zu weisen.

    – Peter Kruithof

    2. Juni 2014 um 15:23 Uhr


  • @Jayd Was sind die Nachteile dieser Syntax im Vergleich zu hasOwnProperty?

    – Jo Smo

    11. Dezember 2015 um 17:18 Uhr

  • @JoSmo die in-Syntax könnte true für Attribute in der Prototypkette zurückgeben, wie Gary Chambers in seiner Antwort erwähnte. Hat eigene Eigenschaft wird nur nach Feldern suchen, die für das aktuelle Objekt endemisch sind.

    – Jayd

    7. Januar 2016 um 8:56 Uhr

Zusätzlich zu den oben genannten Möglichkeiten können Sie Folgendes verwenden:

if(obj.myProperty !== undefined) {
}

  • Diese Methode kann nicht zwischen fehlendem Feld und vorhandenem Feld mit undefiniertem Wert unterscheiden. Zum Beispiel: {} und {a : undefined}

    – Arashsoft

    11. April 2018 um 16:47 Uhr

  • @Arashsoft hast du einen Anwendungsfall gefunden, bei dem diese beiden Situationen einen wesentlichen Unterschied verursachen? Zum Beispiel, dass ein Test fehlschlägt oder etwas in der Benutzeroberfläche nicht richtig gerendert wird?

    – Jason

    1. Oktober 2021 um 22:11 Uhr

  • @Jason Das ist nicht der Punkt. Der Punkt ist, dass Sie damit nicht prüfen können, ob ein Feld in einem Objekt vorhanden ist.

    – Osterfest

    25. Dezember 2021 um 4:55 Uhr

Es gibt hat Methode in der Lodash-Bibliothek dafür. Es kann sogar nach verschachtelten Feldern suchen.

_.has(object, 'a');     
_.has(object, 'a.b');

1175930cookie-checkIm Javascript. Wie kann ich feststellen, ob ein Feld in einem Objekt vorhanden ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy