2921 Stimmen

Länge eines JavaScript-Objekts

Ich habe ein JavaScript-Objekt. Gibt es eine eingebaute oder akzeptierte bewährte Methode, um die Länge dieses Objekts zu ermitteln?

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

1 Stimmen

@neitony - das ist irgendwie wahr, aber so viele Leute sind an PHP's "assoziatives Array" gewöhnt, dass sie annehmen könnten, es bedeutet " bestellt assoziative Karte", wenn JS-Objekte in der Tat ungeordnet sind.

4 Stimmen

In dem obigen Beispiel ist myObject.length undefiniert, zumindest in einer Browserumgebung. Deshalb ist es ungültig, @AdrianM

3 Stimmen

Varianten von Object. { keys , values , entries } (obj).length wurden nun insgesamt 38 Mal in 16 Antworten und in den Kommentaren zu dieser Frage erwähnt, und weitere 11 Mal in 7 gelöschten Antworten. Ich denke, das ist jetzt genug.

12voto

Jerry Punkte 121

Wie wäre es mit etwas wie diesem

function keyValuePairs() {
    this.length = 0;
    function add(key, value) { this[key] = value; this.length++; }
    function remove(key) { if (this.hasOwnProperty(key)) { delete this[key]; this.length--; }}
}

11voto

pcnate Punkte 1586

Wenn Sie Folgendes verwenden AngularJS 1.x können Sie die Dinge auf die AngularJS-Art erledigen, indem Sie einen Filter erstellen und den Code aus einem der anderen Beispiele wie dem folgenden verwenden:

// Count the elements in an object
app.filter('lengthOfObject', function() {
  return function( obj ) {
    var size = 0, key;
    for (key in obj) {
      if (obj.hasOwnProperty(key)) size++;
    }
   return size;
 }
})

Verwendung

In Ihrem Controller:

$scope.filterResult = $filter('lengthOfObject')($scope.object)

Oder aus Ihrer Sicht:

<any ng-expression="object | lengthOfObject"></any>

4 Stimmen

Der Auftraggeber hat nicht nach einer AngularJS-Version gefragt. Dies ist nicht eine gültige Antwort auf die Frage.

10voto

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

console.log(Object.keys(myObject).length)

// o/p 3

0 Stimmen

Was bedeutet "o/p 3" bedeuten?

0 Stimmen

Eine Erläuterung dieser Antwort wäre angebracht.

2 Stimmen

Wie unterscheidet sie sich außerdem von früheren Antworten, z. B. Shahebs Antwort ?

9voto

John Slegers Punkte 41127

Wenn Sie sich nicht um die Unterstützung von Internet Explorer 8 oder niedriger kümmern, können Sie die Anzahl der Eigenschaften in einem Objekt ganz einfach mit den folgenden zwei Schritten ermitteln:

  1. Führen Sie entweder Object.keys() um ein Array zu erhalten, das nur die Namen derjenigen Eigenschaften enthält, die aufzählbar o Object.getOwnPropertyNames() wenn Sie auch die Namen von Eigenschaften einschließen wollen, die nicht aufzählbar sind.
  2. Holen Sie sich die .length Eigenschaft dieses Arrays.

Wenn Sie dies mehr als einmal tun müssen, können Sie diese Logik in eine Funktion verpacken:

function size(obj, enumerablesOnly) {
    return enumerablesOnly === false ?
        Object.getOwnPropertyNames(obj).length :
        Object.keys(obj).length;
}

So verwenden Sie diese besondere Funktion:

var myObj = Object.create({}, {
    getFoo: {},
    setFoo: {}
});
myObj.Foo = 12;

var myArr = [1,2,5,4,8,15];

console.log(size(myObj));        // Output : 1
console.log(size(myObj, true));  // Output : 1
console.log(size(myObj, false)); // Output : 3
console.log(size(myArr));        // Output : 6
console.log(size(myArr, true));  // Output : 6
console.log(size(myArr, false)); // Output : 7

Siehe auch diese Fiedel für eine Demo.

9voto

wade harrell Punkte 91

Eine Abwandlung einiger der oben genannten Punkte ist:

var objLength = function(obj){    
    var key,len=0;
    for(key in obj){
        len += Number( obj.hasOwnProperty(key) );
    }
    return len;
};

Es ist ein etwas eleganterer Weg, hasOwnProp zu integrieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X