Perl哈希到JavaScript数组的长度爆炸

Perl哈希到JavaScript数组的长度爆炸,javascript,perl,Javascript,Perl,我有一个perl哈希,我正在循环并构建一个JavaScript数组。当我启动JavaScript数组时,它的长度为0;然而,在过去的第一阶段,它迅速增长到1001,第二阶段是2001,第三阶段是4001。我希望长度是3!下面是代码和perl哈希 代码 试一试 var提供=[]; %foreach my$金额(钥匙%$优惠){ 报价。推送(“”); console.log(offers.length); % } 我想您需要的是一个关联数组/对象。如果您希望通过代码(如offers['1000']

我有一个perl哈希,我正在循环并构建一个JavaScript数组。当我启动JavaScript数组时,它的长度为0;然而,在过去的第一阶段,它迅速增长到1001,第二阶段是2001,第三阶段是4001。我希望长度是3!下面是代码和perl哈希

代码 试一试

var提供=[];
%foreach my$金额(钥匙%$优惠){
报价。推送(“”);
console.log(offers.length);
%  }

我想您需要的是一个关联数组/对象。如果您希望通过代码(如
offers['1000']
)来识别数据,但没有1000个元素,那么您只需像下面这样初始化提供:

var offers = {};
var offer;
for (offer in offers) {
/* do something with offers[offer] here */
}
并保持代码的其余部分不变。不再有length属性,但您将只为存储的每个项目创建一个条目,而不是1000个条目

您可以通过如下方式迭代数据:

var offers = {};
var offer;
for (offer in offers) {
/* do something with offers[offer] here */
}

这并没有说明什么,JS有一个非常奇怪的数组概念。尝试查看实际指数数量:
var指数;对于(数组中的键){indexes.push(key)}console.log(indexes.length)
第一次传递提供[1000]=[]。这将创建一个长度为1001的数组,因为它由索引0到1000组成。也许您应该使用对象而不是数组。@Barmar,如何使用advice将其转换为对象?在Perl中使用JSON编码,或者在JavaScript中手动构造对象?我不确定这是否可行,因为它需要是多维的。
var offer;
for (offer in offers) {
/* do something with offers[offer] here */
}