我有一个像这样的数组变量:
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]
时会出错。错误是未定义的变量。
是否可以创建动态数组变量名?
答案 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; }