it-swarm.com.de

Objektlänge in JavaScript nicht definiert

Ich habe ein Javascript-Objekt von Arrays wie

var coordinates = {
     "a": [
         [1, 2],
         [8, 9],
         [3, 5],
         [6, 1]
     ],

         "b": [
         [5, 8],
         [2, 4],
         [6, 8],
         [1, 9]
     ]
 };

aber coordinates.length gibt undefined . Fiddle ist hier .

9
mpsbhat

Da coordinatesObject nicht Array ist, verwenden Sie for..in

var coordinates = {
     "a": [
         [1, 2],
         [8, 9],
         [3, 5],
         [6, 1]
     ],

     "b": [
         [5, 8],
         [2, 4],
         [6, 8],
         [1, 9]
     ]
 };

for (var i in coordinates) {
  console.log(coordinates[i]) 
}

oder Object.keys

var coordinates = {
  "a": [
    [1, 2],
    [8, 9],
    [3, 5],
    [6, 1]
  ],

  "b": [
    [5, 8],
    [2, 4],
    [6, 8],
    [1, 9]
  ]
};

var keys = Object.keys(coordinates);

for (var i = 0, len = keys.length; i < len; i++) {
  console.log(coordinates[keys[i]]);
}
13
Alexander T.

coordinates ist ein Objekt. Objekte in Javascript haben standardmäßig keine length-Eigenschaft. Einige Objekte haben eine Länge-Eigenschaft:

"a string - length is the number of characters".length

['an array', 'length is the number of elements'].length

(function(a, b) { "a function - length is the number of parameters" }).length

Sie versuchen wahrscheinlich, die Nummer von keys in Ihrem Objekt zu finden. Dies kann über Object.keys() erreicht werden:

var keyCount = Object.keys(coordinates).length;

Seien Sie vorsichtig, da jedem Objekt eine length -Eigenschaft hinzugefügt werden kann:

var confusingObject = { length: 100 };
6
Armand

http://jsfiddle.net/3wzb7jen/2/

 alert(Object.keys(coordinates).length);
2
AshBringer