将数组存储为变量然后转换回数组

时间:2012-01-04 12:08:55

标签: javascript arrays variables store

我正在制作一个javascript游戏但是(不是基于浏览器的)但我正在使用的引擎有一个错误,当你退出游戏时它会删除存储的数组。所以要通过,我想将我的数组存储为变量,然后当你加载游戏时将它们转换回数组。

目前我的游戏只有一个阵列。 有人提出了这个代码,但它不能正常工作,因为当我运行一个脚本在不同的行上打印数组的每个元素时,它会打印第一行的第一个元素,然后在第二行打印其余的像这样:element1,element2,element3 以下是该人建议的代码:

  

每次更新数组时都会运行此代码。   这里,数组是“questsActive”,存储的var是“questsActiveVar”。

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

每当游戏加载时都会运行;它重新创建了那个数组   删除

  eval(questsActiveVar);

3 个答案:

答案 0 :(得分:1)

要在javascript中使用string创建数组,您需要使用函数.split()。这是一个例子:

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

根据我在您的上下文中的理解,我只需保存questsActiveVar变量,然后再次加载游戏时.split()

答案 1 :(得分:1)

我不确定我是否理解这个问题,但如果您只想存储数据,为什么要存储部分javascript?我建议您在存储中存储数组的JSON字符串,然后在加载时将其解析为数组。

代码应如下所示:

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

加载它:

var questsActive = JSON.parse(questsActiveVar);

在这种情况下,您可以使用逗号,子数组等存储更复杂的变量。

答案 2 :(得分:0)

您只是使用替换号码替换第一个项目。

试试这个:

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