Object.length undefined в javascript
У меня есть объект javascript массивов вроде,
var coordinates = {
"a": [
[1, 2],
[8, 9],
[3, 5],
[6, 1]
],
"b": [
[5, 8],
[2, 4],
[6, 8],
[1, 9]
]
};
но coordinates.length
возвращает undefined. Скрипка здесь.
Ответы
Ответ 1
Поскольку coordinates
не является Object
, а не Array
, используйте 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])
}
или 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]]);
}
Ответ 2
coordinates
является объектом. Объекты в javascript по умолчанию не имеют свойства length
. Некоторые объекты имеют свойство длины:
"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
Возможно, вы пытаетесь найти номер keys
в вашем объекте, что можно сделать через Object.keys()
:
var keyCount = Object.keys(coordinates).length;
Будьте осторожны, так как свойство length
может быть добавлено к любому объекту:
var confusingObject = { length: 100 };
Ответ 3
http://jsfiddle.net/3wzb7jen/2/
alert(Object.keys(coordinates).length);