对JavaScript数组的Perl哈希值会爆炸

时间:2013-05-06 19:01:35

标签: javascript perl

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

代码

var offers = [];
%  foreach my $amount (keys %$offers) {
     offers['<% $amount %>'] = [];
     console.log(offers.length);
%  }

Perl Hash

{
    '1000'=>{
        '6'=>{
            'payment'=>'173.49',
            'fee'=>'2',
            'APR'=>'13.9'
        },
        '4'=>{
            'payment'=>'256.23',
            'fee'=>'2',
            'APR'=>'11.9'
        }
    },
    '2000'=>{
        '6'=>{
            'payment'=>'346.98',
            'fee'=>'2',
            'APR'=>'13.9'
        },
        '4'=>{
            'payment'=>'512.46',
            'fee'=>'2',
            'APR'=>'11.9'
        }
    },
    '4000'=>{
        '6'=>{
            'payment'=>'693.96',
            'fee'=>'2',
            'APR'=>'13.9'
        },
        '4'=>{
            'payment'=>'1024.92',
            'fee'=>'2',
            'APR'=>'11.9'
        }
    }
};

2 个答案:

答案 0 :(得分:1)

尝试

var offers = [];
%  foreach my $amount (keys %$offers) {
     offers.push('<% $amount %>');
     console.log(offers.length);
%  }

答案 1 :(得分:1)

我认为你想要的是一个关联数组/对象。如果您希望通过offers['1000']等代码识别数据,但却没有1,000个元素,那么您只需要初始化这样的商品:

var offers = {};

并保持其余代码不变。不再有长度属性,但您只会为每个存储的项目创建一个条目而不是1,000个。

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

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