2012-01-04 170 views
0

我正在製作一個JavaScript遊戲,但是(不是基於瀏覽器的),但是我使用的引擎有一個錯誤,它會在您退出遊戲時刪除存儲的數組。所以爲了得到通過,我想將我的數組作爲變量存儲,然後在加載遊戲時將它們轉換回數組。將數組存儲爲變量然後轉換回數組

目前我的遊戲只有1個陣列。 有人提出這個代碼,但它不能正常工作,因爲當我運行一個腳本來在不同的行上打印數組的每個元素時,它會在第一行打印第一個元素,然後在第二行打印其餘行這個:element1,element2,element3 這裏是人建議的代碼:

這段代碼每次更新數組時都會運行。 這裏,數組是「questsActive」,它存儲在var中的是「questsActiveVar」。

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

這會在遊戲加載時運行;它再現了那是 的陣列中刪除

eval(questsActiveVar); 
+0

作爲@Genius觀察是響應它可能是在你的上下文中使用JSON,如果有相當數量的數據保存一件好事。 http://www.json.org/ – 2012-01-04 12:22:37

回答

0

您只是用替換調用替換第一個項目。

試試這個:

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

非常感謝你的完美。 – gabriel101x 2012-01-04 23:51:52

1

要創建在JavaScript中,你需要使用的功能.split()一個string的數組。這裏有一個例子:

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

從我在您的上下文理解我只想救questsActiveVar變量,然後.split()它當遊戲加載一次。

+1

你可以使用'join()'來做相反的事情;將數組轉換爲一個字符串:'array.join(',')'。 – powerbuoy 2012-01-04 12:29:00

+1

我無法使用split,因爲它將數組內容轉換爲一系列字符串,並且我的數組包含一系列變量。 – gabriel101x 2012-01-04 12:49:08

+0

@ gabriel101x我不確定要關注。數組如何具有變量而不是它們的值?你可以在你的問題中添加一個簡單的例子嗎? – 2012-01-04 13:05:54

1

不知道我明白這個問題,但爲什麼要存儲一部分javascript,如果你只需要存儲數據?我建議你在你的存儲中存儲數組的JSON字符串,然後在加載時將其解析爲數組。

的代碼應該是這樣的:

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

並將其裝載到:

var questsActive = JSON.parse(questsActiveVar); 

在這種情況下,你可以存儲更加複雜變量之間用逗號,子陣列等

相關問題