It似乎总是空的:
var idStruttura=2;
var arrayMarkers=new Array();
arrayMarkers["sede_"+idStruttura] = "ciao";
alert(arrayMarkers.length);
打印始终为0。为什么?我怎么才能修复它呢?
发布于 2012-02-08 13:32:10
数组不是关联数组,但是数组对象是对象,并且所有对象都是关联数组。如果在将项分配给数组时使用字符串作为键,则不是将其用作数组,而是将其用作对象。
数组的length
属性返回已存储在数组中的项数。如果还将数组对象用作关联数组,则不会影响将数组用作数组的方式。
发布于 2012-02-08 13:31:26
您创建的是一个常规数组对象,并为其添加了一个名为sede_...
的属性。JavaScript不像PHP这样的语言那样使用关联数组。数组是可以具有属性的对象,但这些属性不在数字索引的数组元素中。
var idStruttura=2;
var arrayMarkers=new Array();
// Push an object onto the array having one property:
arrayMarkers.push({"sede_" + idStruttura : "ciao"});
// Or declare it as an object to begin with:
// This makes more sense....
var objMarkers = {};
objMarkers['sede_' + id] = 'ciao';
发布于 2012-02-08 13:32:04
当您存储对象时没有长度,只有当您按预期使用数组时才有长度。
试试这个(DEMO)
var idStruttura=2;
var arrayMarkers={}; // creates a more appropriate object than []
arrayMarkers["sede_"+idStruttura] = "ciao";
arrayMarkers["sede_"+(++idStruttura)] = "espresso";
var len = 0;
for (var o in arrayMarkers) {
if (arrayMarkers.hasOwnProperty(o)) len++;
}
arrayMarkers.length=len
alert(arrayMarkers.length)
https://stackoverflow.com/questions/9194247
复制