AS3:通过For循环访问阵列名称与计数器?

时间:2017-03-06 03:21:21

标签: actionscript-3 flash

我不知道您会使用AS3调用或定义此类问题。 我有2个For循环,看起来像这样:

// Here I would have 5 arrays naming from NDW1 to NDW5
var NDW1:Array = new Array();

for(var a:int = 1; a < 6; a++){
    for(var b:int = 0; b < 14; b++){
       // Here I want to call a function and assign it to a textfield
       this["DifferenceW"+a+"_"+b].text = CalculateDifference(Number("NDW"+a+"["+b+"]"), Number("NDW"+a+"["+b+"]")).toString();
    }
}

我在使用计数器增加实际数组和数组元素时尝试访问 NDW 的实际数组时的问题。

但是当我输入&#34; NDW&#34; + a +&#34; [&#34; + b +&#34;]&#34; 时,它只会返回一个字符串值。我如何实际让它返回当前元素的数组? 例如,如果NDW1[0] = 2而不仅仅是一串NDW1[0]

3 个答案:

答案 0 :(得分:1)

5个数组,你想循环遍历每个数组?将这5个数组放在1个数组中。

private var _allArr:Array = [NDW1, NDW2, NDW3, NDW4, NDW5];

现在,您可以轻松访问所有内容而无需愚蠢的字符串连接。

for each (var a:Array in _allArr){
    for each (var b:Number in a){
        this["DifferenceW"+a+"_"+b].text = (CalculateDifference(a[b], a[b])).toString();
    }
}

CalculateDifference做什么?你给它两个相同的数字,所以我希望它不计算这些数字之间的差异(总是0)。

反正。循环使用它们的另一种方法是:

for (var i:int = 0; i < _allArr.length; i++){
    for (var j:int = 0; j < _allArr[i].length; j++){
        this["DifferenceW"+a+"_"+b].text = (CalculateDifference(_allArr[i][j], _allArr[i][j])).toString();
    }
}

更新

我猜你想要找到NDW1 [0]和NDW2 [0]等之间的区别。如果是这样,你的CalculateDifference函数应该传递这两个值。这有点棘手。这样做:

for (var i:int = 0; i < _allArr.length; i++){
    for (var j:int = 0; j < _allArr[i].length - 1; j++){
        this["DifferenceW"+a+"_"+b].text = (CalculateDifference(_allArr[i][j], _allArr[i+1][j])).toString();
    }
}

答案 1 :(得分:0)

尝试使用关键字

的多个组合

它可以用来访问你创建的我从未知道的变量,但是为了将来参考访问你将使用的任何变量:

此[&#34; VARIABLENAME&#34;]

在我的情况下,for循环访问你将使用的元素

此[&#34; NDW&#34 + A] [B]

答案 2 :(得分:0)

正如其他人已经说过的那样,你要做的事情并不是很清楚,而且看起来你真的过于复杂,应该非常简单。

要回答你的问题,使用“NDW”+ a +“[”+ b +“]”,你的错误是认为你可以连接一个字符串来创建一个变量名。你不能。这将始终返回一个字符串,因为它是您正在创建的字符串。

“在'这个'对象上,但这真的不是一件好事。

Neal的解决方案看起来不错,但不会在每次迭代时评估数组的长度,因为效率非常低。