如何在ExtJS中创建动态数组变量名称

时间:2014-09-10 03:16:56

标签: c# javascript asp.net extjs

我有一个像这样的数组变量:

var subPriceSelectedIdxArray = [];

在另一个我有一个生成计数器变量,如下所示:

int counter = 0;
for(i=0;i<10;1++)
{
counter += 1;
}

我想将它们两个变量结合起来,因为我需要一个动态变量。所以我有一个动态变量,如subPriceSelectedIdxArray1,subPriceSelectedIdxArray2,subPriceSelectedIdxArray3,subPriceSelectedIdxArray等......

我创建了这段代码:

listeners: {
        select: function (selectionModel, selected, idx, opt) {
            window[subPriceSelectedIdxArray + index].push(idx);
        }

但是当我将idx推送到window[subPriceSelectedIdxArray + index]时会出错。错误是未定义的变量。

是否可以创建动态数组变量名?

1 个答案:

答案 0 :(得分:1)

你想做的事情是可能的。但不推荐。

让我们先回答问题。为了动态地对变量名称subPriceSelectedIdxArray2进行转换,您必须像往常一样将其附加到window,但是这样:

window['subPriceSelectedIdxArray' + index] = idx;
// if index is 1, this will create a variable called subPriceSelectedIdxArray1
// if index is 2, this will create a variable called subPriceSelectedIdxArray

此变量与subPriceSelectedIdxArray无关,并且它不会是一个数组,它将是Number

所有这一切,它看起来像你想要的是一个数组,因为你想要一个变量来存储多个变量并通过它们的索引查找它们。这是做你想做的事的正确方法。也许你有充分的理由不去?如果是这样,为什么?

为此你应该这样做:

var subPriceSelectedIdxArray = []

select: function (selectionModel, selected, idx, opt) {
   // Make sure this array is defined
   subPriceSelectedIdxArray[index] = subPriceSelectedIdxArray[index] || [];
   subPriceSelectedIdxArray[index].push(idx); }

或:

select: function (selectionModel, selected, idx, opt) {
   // Make sure this array is defined
   subPriceSelectedIdxArray[index] = subPriceSelectedIdxArray[index] || [];
   subPriceSelectedIdxArray[index][idx] = idx; }