我不知道您会使用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]
?
答案 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的解决方案看起来不错,但不会在每次迭代时评估数组的长度,因为效率非常低。