【问题标题】:how to fill in the value in the array如何填充数组中的值
【发布时间】:2020-12-02 04:01:11
【问题描述】:

我在 actionscript3 中有这样的代码,

var map: Array = [
                  [[0,1,0],[0,1,0]],
                  [[0,1,0], [0,1,0]]]; 
var nom1: int = 0;
var nom2: int = 0;
var nom3: int = 1;
var nom4: int = 18;
stage.addEventListener (Event.ENTER_FRAME, beff);
function beff (e: Event): void
{
  map[nom1][nom2][nom3] = nom4
}
stage.addEventListener (MouseEvent.CLICK, brut);
function brut(e: MouseEvent):void 
{
 trace (map)
}

运行时输出错误

我想要的是填写每个“1”值而不是删除“[”或“]”符号

所以当 var nom1, var nom2 改变时

那么输出就是

[[[0,18,0],[0,18,0]],
 [[0,18,0],[0,18,0]]]

请帮助那些可以解决这个问题的人

【问题讨论】:

  • 请分享您遇到什么样的错误。我用你的原始 mapmap[0][0][1] = 18; 行做了一个简化测试,它仍然运行良好并产生了预期的结果结果。
  • 对不起,我的意思是为“i”和“j”(var nom1和var nom2)添加var map深度级别,因为当我更改“var nom1”中的值时和“var nom2”到更高的值,它会发生错误

标签: javascript actionscript-3 flash


【解决方案1】:

如果您想要实现的是在这个嵌套数组中将每 1 替换为 18,您可以尝试:

for (var i = 0; i < map.length; i++) {
    var secondLevel = map[i];
    for (var j = 0; j < secondLevel.length; j++) {
        var thirdLevel = secondLevel[j];
        for (var k = 0; k < thirdLevel.length; k++) {
            if (thirdLevel[k] === 1) {
                thirdLevel[k] = 18;
            }
        }
    }
}

请注意,这仅适用于具有 3 级深度的嵌套数组

【讨论】:

  • 两个外部循环的 for each 循环将使脚本更短。
  • 另外,thirdLevel[k] === 18; 是比较,而不是赋值。它不会改变 map 中的数据。
  • 对不起,我的意思是为“i”和“j”(var nom1和var nom2)添加var map深度级别,因为当我更改“var nom1”中的值时和“var nom2”到更高的值,它会发生错误
猜你喜欢
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多