首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我的关联数组不存储对象

我的关联数组不存储对象
EN

Stack Overflow用户
提问于 2012-02-08 21:28:58
回答 5查看 164关注 0票数 0

It似乎总是空的:

代码语言:javascript
代码运行次数:0
运行
复制
var idStruttura=2;
var arrayMarkers=new Array();

arrayMarkers["sede_"+idStruttura] = "ciao";
alert(arrayMarkers.length);

打印始终为0。为什么?我怎么才能修复它呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-08 21:32:10

数组不是关联数组,但是数组对象是对象,并且所有对象都是关联数组。如果在将项分配给数组时使用字符串作为键,则不是将其用作数组,而是将其用作对象。

数组的length属性返回已存储在数组中的项数。如果还将数组对象用作关联数组,则不会影响将数组用作数组的方式。

票数 2
EN

Stack Overflow用户

发布于 2012-02-08 21:31:26

您创建的是一个常规数组对象,并为其添加了一个名为sede_...的属性。JavaScript不像PHP这样的语言那样使用关联数组。数组是可以具有属性的对象,但这些属性不在数字索引的数组元素中。

代码语言:javascript
代码运行次数:0
运行
复制
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';
票数 2
EN

Stack Overflow用户

发布于 2012-02-08 21:32:04

当您存储对象时没有长度,只有当您按预期使用数组时才有长度。

试试这个(DEMO)

代码语言:javascript
代码运行次数:0
运行
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9194247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档