我正在制作一个javascript游戏但是(不是基于浏览器的)但我正在使用的引擎有一个错误,当你退出游戏时它会删除存储的数组。所以要通过,我想将我的数组存储为变量,然后当你加载游戏时将它们转换回数组。
目前我的游戏只有一个阵列。 有人提出了这个代码,但它不能正常工作,因为当我运行一个脚本在不同的行上打印数组的每个元素时,它会打印第一行的第一个元素,然后在第二行打印其余的像这样:element1,element2,element3 以下是该人建议的代码:
每次更新数组时都会运行此代码。 这里,数组是“questsActive”,存储的var是“questsActiveVar”。
questsActiveVar = questsActive.toString(); questsActiveVar = questsActiveVar.replace(",", "\",\""); questsActiveVar = "questsActive=new Array(\"".concat(questsActiveVar,"\")");
每当游戏加载时都会运行;它重新创建了那个数组 删除
eval(questsActiveVar);
答案 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, "\",\"");