2012-01-04 8 views
0

私はjavascriptゲームを作成していますが、ブラウザベースではありませんが、使用しているエンジンには、ゲームを終了するときに格納された配列を削除するバグがあります。だから、私は変数として配列を格納したいと思って渡すために、その後、ゲームをロードして配列に戻して変換します。配列を変数として格納してから配列に戻します

現時点では、ゲームには1つの配列しかありません。 誰かがこのコードを提案しましたが、別の行に配列の各要素を印刷するスクリプトを実行すると、最初の要素が最初の行に表示されますが、2行目には残りの列が印刷されますこの:要素1、要素2は、ここで を要素3人が提案したコードです:

は、このコードは、配列が更​​新されるたびに実行されます。 ここでは、配列は「questsActive」で、格納されるvarは「questsActiveVar」です。

questsActiveVar = questsActive.toString(); 
    questsActiveVar = questsActiveVar.replace(",", "\",\""); 
    questsActiveVar = "questsActive=new Array(\"".concat(questsActiveVar,"\")"); 

これは、ゲームがロードされるたびに実行されます。それはあなたが 機能.split()を使用する必要がJavaScriptでstringから配列を作成するには

eval(questsActiveVar); 
+0

は、あなたが保存するデータのかなりの量を持っている場合、あなたのコンテキストでJSONを使用するには良いことかもしれない応答です。 http://www.json.org/ –

答えて

0

の最初のアイテムは、replace呼び出しで置き換えられます。

このお試しください:@Geniusがで観察したよう

questsActiveVar = questsActiveVar.replace(/,/g, "\",\""); 
+0

それは完璧に働いてくれてありがとう。 – gabriel101x

1

を削除された配列を再作成します。

var someStr = 'item1, item2, item3'; 
var array = someStr.split(','); // place any character in here to split on 
alert(array[0]);      // => item1 

は、私はあなたの文脈で理解して何から、私は単に時にゲームのロード再び.split()、それをquestsActiveVar変数を保存します:ここでは一例です。

+1

'join()'を使用してその逆を行うことができます。配列を文字列 'array.join( '、')'に変換します。 – powerbuoy

+1

配列の内容を一連の文字列に変換し、配列に一連の変数が含まれているため、splitを使用できません。 – gabriel101x

+0

@ gabriel101x私は守るべきではない。配列はどのように変数を持ち、その値は持てませんか?あなたはあなたの質問にその簡単な例を追加できますか? –

1

私はこの問題を理解していませんが、データのみを保存する必要がある場合はJavaScriptの一部を保存する理由をよくわかりません。私は、配列のJSON文字列をストレージに格納し、ロード時に配列として解析することをお勧めします。

コードは次のようになります。

var questsActiveVar = JSON.stringify(questsActive); 
// questsActiveVar can be stored anywhere as a string 

そして、それをロードするには:この場合

var questsActive = JSON.parse(questsActiveVar); 

あなたがなどカンマ、サブアレイ、とさらに複雑に変数を格納することができます

関連する問題