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

本文关键字:动态 数组 变量名 创建 ExtJS | 更新日期: 2023-09-27 18:21:28

我有一个数组变量,如下所示:

var subPriceSelectedIdxArray = [];

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

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

我想把这两个变量组合起来,因为我需要一个动态变量。所以我有一个动态变量,比如subPriceSelectedIdxArray1、subPriceSelected IdxArray2、subPriceSelectedIdxArray3、subPriceSelectedIdxArray等

我创建这个代码:

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

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

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

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

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

让我们先回答问题。为了动态地标记像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; }