2017-01-09 16 views
0

私はこのフォーラムには新しく、数時間後に壁に頭を叩き、TeamTreeHouseに登録してアレイの詳細なコースを検索しましたが、探しているものが見つかりませんでした。私はteamTreehouseが大好きです。Javascriptでforループ変数の配列を作る方法は?

C#からJavascriptにリストや配列を変更しようとすると問題が発生しました。 RPGメーカーのMVです。私は "CharacterID"の位置XとYのリストを作成し、Xの位置とYの位置の配列の中に入れた各タイルとの距離を計算します。 CharacterのIDは0以上であり、そのIDとそのxとyの位置はeventArray [ID、x、y]です。だから私はCharacterIDの位置を得たが、私は36行(私の配列の長さ)の代わりに最大10行のコードを得るように物事をループする方法私の人生のために理解していない。 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) 
} 

上記のコードは、私が「J」変数で宣言されたとして、それは私にtilePosArrayXadd1.lengthのリストを与えるだろうと思ったとき...私の1の長さを与えます。だから、誰でも私が間違っていることを説明したり、この問題の説明を含む非常に良いチュートリアルに案内したりすることができます。あなたの時間のためにみんなありがとう。 Ninekorn

+0

'tilePosArrayXadd1'はどこに定義されていますか?その配列にはいくつのアイテムがありますか? – hackerrdave

+0

'tilex0'と' tiley0'は、ループが終了した後、 'tilePosArrayXadd1.length'と等しい長さを持つべきです...ループの後に' console.log(tilex0.length) 'を移動して確認してください。 –

+0

コード – Ninekorn

答えて

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 

このような例を作成しようとすると、自分でエラーが発生することがよくあります。しかし、そうでない場合は、この単純な例をコードに戻して、最初に破損したときを確認できますか?それはそれを解決するのに役立つはずです。

関連する問題