如何使用Javascript创建for循环变量的数组?

时间:2017-01-09 02:21:00

标签: javascript arrays

我是这个论坛的新手,我已经搜索过几个小时的敲打墙,甚至在TeamTreeHouse注册了一个关于阵列的详细课程我无法找到我想要的东西。我喜欢teamTreehouse。

我遇到了尝试从C#切换到Javascript的问题,列表和数组不同。它适用于RPG Maker MV。我想列出一个" CharacterID"的位置X和Y的列表。并计算我放入X位置和Y位置数组的每个瓷砖的距离。字符的ID为0或更多,具体是它的ID&及其x和y位置的eventArray [ID,x,y]。所以我得到了CharacterID的位置,但我不了解我的生活如何循环这个东西,这样我得到最多10行代码而不是36行(我的数组的长度)。在C#中,Vector3会自动添加到列表或字典中,并且是单独的" items"但如果我尝试使用相同的Javascript数组原则,我会得到1个包含整个条目列表的项目,但我不知道如何检索它们。

var eventArray = [];

var tilePosArrayXadd1 = [];
var tilePosArrayYadd1 = [];

Game_Event.prototype.initialize = function (mapId, eventId) {
Game_Character.prototype.initialize.call(this);

this._mapId = mapId;
this._eventId = eventId;

this.locate(this.event().x, this.event().y);
var eventX = this.event().x;
var eventY = this.event().y;
this.refresh();
eventArray.push([eventId, eventX, eventY]);
};

Game_Player.prototype.locate = function (x, y) {
Game_Character.prototype.locate.call(this, x, y);

actorX = $gamePlayer.x;
actorY = $gamePlayer.y;
main(actorX, actorY);
};



function main(x, y) {

var maxTileDist = 2;

///TOPRIGHTTILES
for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y);
};   

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y + 1);


};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y + 2);

};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y + 3);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y + 4);
};


///TOPLEFTTILES
for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y);

};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y + 1);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y + 2);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y + 3);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y + 4);
};


///BOTTOMRIGHTTILES
/*for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push([[i + x+1], y]);
};*/

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y - 1);
};


for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y - 2);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y - 3);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i + x);
    tilePosArrayYadd1.push(y - 4);
};


///BOTTOMLEFTTILES
/*for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push([[i - x], y]);
};*/

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y - 1);

};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y - 2);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y - 3);
};

for (var i = 0; i < maxTileDist ; i++) {
    tilePosArrayXadd1.push(i - x);
    tilePosArrayYadd1.push(y - 4);
};





var tilex0 = [];
var tiley0 = [];

 for (var j = 0; j < tilePosArrayXadd1.length; j++) {

  tilex0.push(eventArray[0][1] - tilePosArrayXadd1[j]);
  tiley0.push(eventArray[0][2] - tilePosArrayYadd1[j]);

  console.log(tilex0[0])
  console.log(tilex0.length)
 }

上面的代码给了我一个长度为1 ...当我以为它会给我一个tilePosArrayXadd1.length列表,如#34; j&#34;变量。所以大声笑,任何人都可以解释我做错了什么或指导我一个非常好的教程,包含对这个问题的解释。谢谢你们的时间。 Ninekorn

1 个答案:

答案 0 :(得分:3)

你是新来的。如果你没有查看Help Center,那可能是个好主意,尤其是关于创建minimal, complete, and verifiable example

的部分

当我尝试为您的代码执行此操作时,我想出了一些可以正常运行的内容:

var events = [[10, 20]]
var foo = [];
var bar = [1, 2, 3]

for (var j = 0; j < bar.length; j++) {
  foo.push(events[0][1] - bar[j]);
}
console.log(foo); //=> [19, 18, 17]
console.log(foo.length); //=> 3

通常情况下,在尝试创建此类示例时,您将自行找到错误。但是,如果没有,你可以建立这个简单的例子回到你的代码,看看它什么时候打破?这应该有助于解决它。