ノードjsを使用してテレグラム上にゲームボットを作成しています。Javascript/Node Js - インスタンスごとに新しい変数を作成する
現在、私は共有変数(module.exports)の問題に直面しています。変数のデータの一部を保存しています。そして問題は、共有変数インデックスが常に変化することです。たとえば、あなたが見ることができるように、私はそれを呼び出すとき、それはsharedVar
の最後値が表示されます、callGameData
機能を持っ
var sharedVar = [];
createNewRoom = function(res) {
var index = sharedVar.length;
sharedVar.push({ groupId : res.chat.id }); // every time this function is invoked, it will create a new array inside sharedVar object
//Here comes the problem, it's about the index,
//because I'm using sharedVar to store arrays, then it will become a problem,
//if one array is deleted (the index will change)
var groupId = sharedVar[index].groupId; // it runs OK, if the structure of array doesn't change, but the structure of array change, the index will be a wrong number
}
下の私のコードを参照してください、電流を表示するためにを想定しています部屋の値/データ。
私は上記のコードで言及したように、すべてのsharedVar
オブジェクト内の動的配列についてです、インデックスは、この種の問題に取り組むために、動的に
任意の考えを変えるのだろうか?私は新しいsharedVar
オブジェクトを使用することを考えていましたが、createNewRoom
関数が呼び出されるたびに、多くの異なる関数でsharedVar
を使用しなければなりません。
EDIT
これは、あなたが上の位置に依存している、論理的な方法でインデックスを追跡していない原因はい、それは間違いなく問題だ
var gameData = undefined;
createNewRoom = function() {
this.gameData = new myConstructor([]); // it will instantiate a new object for each new room
}
myConstructor = function(data) {
var _data = data;
this.object = function() {
return _data;
}
}
callGameData = function() {
console.log(gameData);
}
正確に配列が必要ですか?そして、なぜ各部屋が独自のID(インデックス)を持っていなければならないのですか? – Bergi
にデータを格納します。私のポストで書いたことですが、コンストラクタを使用するなど、各部屋の独立変数を作成することを考えていましたが、問題はまだ変数をグローバルで定義する必要があります。変数 – Webster
これらの機能を表示してください。何もすることはほとんどありません。彼らは部屋の方法ですか? – Bergi