Verstehen der Länge eines JavaScript-Objekts: Best Practices und moderne Lösungen

JavaScript-Objekte sind weit verbreitet, aber wie bestimmt man ihre Länge? Wenn Sie jemals wissen wollten, wie viele Eigenschaften ein Objekt enthält, sind Sie nicht allein. Dieser Artikel untersucht die besten Methoden zur Bestimmung der Länge eines JavaScript-Objekts und die damit verbundenen Nuancen, einschließlich einer Diskussion über Symbole und deren Eigenschaften.

Das Problem

Bei der Arbeit mit JavaScript-Objekten müssen Sie möglicherweise herausfinden, wie viele Eigenschaften sie haben. Zum Beispiel, bei einem einfachen Objekt wie diesem:

const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;

Könnten Sie fragen: Gibt es eine integrierte oder allgemein akzeptierte Methode, um die Länge dieses Objekts zu ermitteln?

Moderne Lösungen

Seit 2016 unterstützen viele Browser ES5 und höher, was es uns ermöglicht, die Länge eines Objekts einfach mit der Methode Object.keys() zu bestimmen. Diese Methode gibt ein Array der eigenen Eigenschaftsnamen des Objekts zurück, und durch Messen der Länge dieses Arrays können wir herausfinden, wie viele Eigenschaften das Objekt hat.

Verwendung von Object.keys()

Hier ist ein Beispiel, wie man dies implementieren kann:

var size = Object.keys(myObject).length;
console.log(size); // Ausgabe: 3

Vorteile der Verwendung von Object.keys()

  • Einfachheit: Es ist unkompliziert und leicht zu implementieren.
  • Keine Prototype-Änderungen: Diese Methode erfordert keine Änderungen am Object-Prototyp, was wichtig ist, um potenzielle Fehler und Konflikte in Ihrem Code zu vermeiden.

Symbol Eigenschaften

Es ist wichtig zu beachten, dass Objekte symbolische Eigenschaften haben können, die Object.keys() nicht zurückgibt. Symbole sind ein besonderer Datentyp in JavaScript, der verwendet wird, um eindeutige Identifikatoren für Objekt-Eigenschaften zu erstellen. Diese Funktion hilft, Eigenschaftsüberschreibungen zu verhindern, wodurch Ihr Code robuster wird.

Zugriff auf symbolische Eigenschaften

Sie können Object.getOwnPropertySymbols() verwenden, um diese Eigenschaften abzurufen. Hier ist, wie man mit regulären und symbolischen Eigenschaften umgeht:

var person = {
  [Symbol('name')]: 'John Doe',
  [Symbol('age')]: 33,
  "occupation": "Programmierer"
};
// Ermittlung der Länge der nicht-symbolischen Eigenschaften
const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // Ausgabe: 1

// Ermittlung der Länge der symbolischen Eigenschaften
let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // Ausgabe: 2

Zusammenfassung zur Methode

Zusammenfassend sind hier die Hauptmethoden, die Sie bei der Berechnung der Länge eines JavaScript-Objekts überprüfen sollten:

  • Object.keys(obj): Gibt die Anzahl der aufzählbaren Eigenschaften mit String-Keys zurück.
  • Object.getOwnPropertyNames(obj): Gibt die Anzahl aller eigenen Eigenschaften zurück (Ignoriert Symbole).
  • Object.getOwnPropertySymbols(obj): Gibt die Anzahl der eigenen symbolischen Eigenschaften zurück.

Ein alternativer Ansatz

In älteren Codebasen war ein häufiger Ansatz, eine Funktion zu erstellen, um die Größe manuell zu berechnen:

Object.size = function(obj) {
  var size = 0;
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) size++;
  }
  return size;
};

// Ermittlung der Größe eines Objekts
const myObj = {};
var size = Object.size(myObj);

Vorsicht

Es ist im Allgemeinen keine gute Praxis, Methoden zum Object.prototype hinzuzufügen, da dies zu unerwartetem Verhalten in Ihren Anwendungen führen kann.

Fazit

Die Bestimmung der Länge eines JavaScript-Objekts ist eine gängige Aufgabe, die effizient mit Object.keys() erreicht werden kann, während auch die Symbole für Vollständigkeit berücksichtigt werden. Mit diesen Werkzeugen an Ihrer Seite werden Sie in der Lage sein, die Anzahl der Eigenschaften von Objekten in Ihren JavaScript-Anwendungen sicher und effektiv zu behandeln.